源码还是这个博文里面的
https://blog.csdn.net/qq78442761/article/details/81228557
程序运行截图如下:
repeat犹如字面意思那样会重复,当几何纹理坐标大于1.0的时候,他取的纹理坐标的值位于纹理坐标减去1.0的位置,如纹理坐标是1.1的时候,他取的颜色的值是0.1。所以1.0和2.0一样,1.1和0.1一样,所以就会重复,就向字面意思那样。
修改的源码如下:
GLuint CreateTexture2D(unsigned char*pixelData, int width, int height, GLenum type) {
GLuint texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexImage2D(GL_TEXTURE_2D, 0, type, width, height, 0, type, GL_UNSIGNED_BYTE, pixelData);
glBindTexture(GL_TEXTURE_2D, 0);
return texture;
}
void Draw() {
glClearColor(0.1f, 0.4f, 0.6f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glEnable(GL_TEXTURE_2D); //开启2D纹理
glBindTexture(GL_TEXTURE_2D, texture);//将当前纹理设置为新创建的纹理对象
glBegin(GL_QUADS);
glColor4ub(255, 255, 255, 255);
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-0.1f, -0.1f, -0.4f);
glTexCoord2f(2.0f, 0.0f);
glVertex3f(0.1f, -0.1f, -0.4f);
glTexCoord2f(2.0f, 2.0f);
glVertex3f(0.1f, 0.1f, -0.4f);
glTexCoord2f(0.0f, 2.0f);
glVertex3f(-0.1f, 0.1f, -0.4f);
glEnd();
}