_OpenGL 2.1
_でテクスチャの例を読みました。フラグメントシェーダーは次のようになります。
_#version 120
uniform sampler2D texture;
varying vec2 texcoord;
void main(void)
{
gl_FragColor = texture2D(texture, texcoord);
}
_
texcoord
は頂点シェーダーから渡されます。
次のC++レンダリングコードが使用されます。
_void render()
{
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture_id);
glUniform1i(unf_texture, 0);
}
_
私はいくつかのことで混乱しています。私はいくつか質問があります:
フラグメントシェーダーでは、テクスチャに(glUniform1i()
によって)ゼロ値が渡されます。値は本当にゼロですか?値は何か他のものですか?
glActiveTexture()
呼び出しは本当に必要ですか?
glUniform1i()
にゼロ値を渡すのはなぜですか?
_sampler2D
_は texture unit にバインドされています。 glUniform
呼び出しは、それをテクスチャユニット0にバインドします。 glActiveTexture()
呼び出しは、複数のテクスチャユニットを使用する場合にのみ必要です(いずれにしても_GL_TEXTURE0
_がデフォルトであるため)。