ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

纹理

2022-08-22 17:02:31  阅读:178  来源: 互联网

标签:layout color TexCoord 纹理 vec4 1.0


纹理坐标

float texCoords[] = {
		1.0f, 1.0f, //右上
		1.0f, 0.0f, //右下
		0.0f, 1.0f, //左上
		0.0f, 0.0f  //左下
	};

纹理环绕方式

把纹理坐标设置在(0,0)到(1,1)之外,会产生循环铺满

纹理过滤

邻近过滤:选择离纹理坐标最近的像素(默认)
线性过滤:线性插值

加载纹理

下载stb_image之后放到项目文件夹里,然后头文件

#define STB_IMAGE_IMPLEMENTATION
#include "stb_image.h"

加载图片:

int width, height, nrChannels;
unsigned char *data = stbi_load("container.jpg", &width, &height, &nrChannels, 0);

生成纹理

纹理也是ID引用的

glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);

然后在顶点上面加纹理坐标,加到最后之后

glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(6 * sizeof(float)));
glEnableVertexAttribArray(2);

在顶点shader里面,加第三个layout

#version 330 core
layout (location=0) in vec3 aPos;
layout (location=1) in vec3 aColor;
layout (location=2) in vec2 aTexCoord;

out vec4 color;
out vec2 TexCoord;

void main()
{
	gl_Position = vec4(aPos, 1.0f);
	color = vec4(aColor, 1.0f);
	TexCoord = aTexCoord;
}

片段着色器加uniform采样器

#version 330 core
in vec4 color;
in vec2 TexCoord;
out vec4 fragColor;
uniform sampler2D ourtexture;
void main()
{
	fragColor = texture(ourtexture, TexCoord) * color;
}

注意顶点坐标一定要仔细检查对应对,要不纹理会乱

标签:layout,color,TexCoord,纹理,vec4,1.0
来源: https://www.cnblogs.com/IamIron-Man/p/16613408.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有