在 OpenGL 2.1+ 中,我们需要glEnable(GL_TEXTURE)
在使用纹理之前调用吗?如果我们遇到纹理问题,可能是什么原因?
更新:
我正在使用 OpenGL 2.1 for Desktop,我的步骤是:
加载 bmp 24 位图像(我检查了 gDebuger,它显示我的纹理正常,所以我确定我的加载图像过程没有失败)。
init()
在procedude中调用几个OpenGL函数:glGenTextures(1, &texture_id); glBindTexture(GL_TEXTURE_2D, texture_id); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, image_width, image_height, 0, GL_BGR, GL_UNSIGNED_BYTE, image_data);
在 draw_scene() 中:
glUseProgram(program); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, texture_id); glUniform1i(uniform_texture, 0); ...
顶点着色器(版本 120):
attribute vec3 vPos; attribute vec2 vTexCoord; uniform mat4 MV; uniform mat4 Projection; varying vec2 fragTexCoord; void main() { fragTexCoord = vTexCoord; gl_Position = Projection * MV * vPos; }
片段着色器:
uniform sampler2D my_texture; varying vec2 fragTexCoord; void main() { gl_FragColor = texture2D(my_texture, fragTexCoord); }