OpenGL 2.1以降では、テクスチャを使用する前にglEnable(GL_TEXTURE)
に電話する必要がありますか?私たちが質感に問題があるなら、原因は何でしょうか?OpenGL 2.1でテクスチャを使用する前にglEnable(GL_TEXTURE)を呼び出す必要がありますか?
更新:
私はデスクトップ用のOpenGL 2.1を使用していて、私のステップは次のとおりです。
ロードBMP 24ビット画像(そう、私はgDebugerにチェックし、それが私のテクスチャがOKを示し私は私のロードイメージプロシージャが失敗していないと確信しています)。
コール
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); }
シェイダーを使用している場合、 'glEnable(GL_TEXTURE)'は何もしません。あなたが得ているもののスクリーンショットを私たちに与えることができますか、またはあなたが持っている出力の問題をより詳しく記述できますか? – TheAmateurProgrammer
私はいくつかの私のパラメータのエラーと思う、私はクリアし、すべてのテクスチャコードを書き換え、今はそれが動作します! GL_RGBA8'、 'GL_RGBA'、...を' internalFormat'でどのように違うのか説明することはできますか? 'internalFormat'で' GL_RGB'を使用した場合、 'texture2D(myTexture、texCoord).a'のようにフラグメントシェーダのalpha要素にアクセスできますか? –