サンプラーのユニフォームを正しいテクスチャユニットに設定した場合、私は印象に残っていましたが、現在バインドされているテクスチャターゲットが0であるかどうかは関係ありません。描画するときに、私はmytextureにGL_TEXTURE_2Dバウンド維持しない限り、例えば、サンプリングするためにバインディングする必要があるテクスチャはありますか?
glActiveTexture(GL_TEXTURE1);
glGenTextures(1, &mytexture);
glBindTexture(GL_TEXTURE_2D, mytexture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, my_data);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glBindTexture(GL_TEXTURE_2D, 0); // This is the line I'm wondering about
はいつか、後で...
glUniform1i(glGetUniformLocation(program, "mysampler"), 1);
//draw_stuff
は残念ながら、画面はすべて黒です。 GL_TEXTURE_2Dが0にバインドされているときにサンプリングするのは不正ですか?
はい、バインドレステクスチャ拡張機能を使用している場合を除き、テクスチャをバインドする必要があります。 – datenwolf
ちょっとしたヒント:あなたのターゲットバージョンが4.5か、あなたが 'GL_ARB_direct_state_access'をサポートしているのであれば、bind to modifyの代わりに' glCreateTextures'、 'glBindTextureUnit'と' glTextureParameter'を使うことを検討してください。同じ効果、少ないコール、パイプラインやオブジェクトの状態の改ざんのリスクを減らすことができます。 – thokra