OpenGL 2.1+ では、テクスチャを使用する前に呼び出す必要がありglEnable(GL_TEXTURE)
ますか? また、テクスチャーに問題があるとしたら、何が原因でしょうか?
アップデート:
デスクトップに OpenGL 2.1 を使用しています。私の手順は次のとおりです。
bmp 24 ビット イメージをロードします (gDebuger をチェックインしたところ、テクスチャが正常に表示されたので、イメージのロード手順が失敗しなかったと確信しています)。
手順でいくつかの OpenGL 関数を
init()
呼び出します。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); }