20
我讀過OpenGL 2.1
中的紋理示例。片段着色器看起來是這樣的:sampler2d存儲什麼?
#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中傳遞零值?
你應該習慣於總是調用'glActiveTexture'。這樣,當你突然需要使用多個紋理時,你不會打破世界。 –
來澄清 - 是否正確的是,可以綁定在同一個「GL_TEXTURE0」下的每個紋理(1D,2D,3D)必須具有傳遞給sampler1D/2D/3D的相同值(0)?並且在「GL_TEXTURE1」下分配的紋理將需要將值1傳遞給着色器內部的制服? – Chris
@Chris是的,這是正確的。 –