使用多个纹理时统一的目的
Purpose of uniform while using multiple texture
我正在尝试理解这段代码:
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture1);
glUniform1i(glGetUniformLocation(ourShader.Program, "ourTexture1"), 0);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, texture2);
glUniform1i(glGetUniformLocation(ourShader.Program, "ourTexture2"), 1);
这是相关的着色器代码:
#version 330 core
...
uniform sampler2D ourTexture1;
uniform sampler2D ourTexture2;
void main()
{
color = mix(texture(ourTexture1, TexCoord), texture(ourTexture2, TexCoord), 0.2);
}
因此,据我了解,在激活 GL_TEXTURE0
之后,我们将 texture1
绑定到它。我的理解是这将 texture1
绑定到第一个 sampler2d.The 我不明白的部分是,为什么我们需要使用 glUniform 调用。
这是一个间接的。您选择在位置 GL_TEXTURE0 输入的纹理,然后告诉着色器中的制服从同一位置获取其纹理。有点像这样(为图表道歉)。
第一行是纹理单元位置,第二行是着色器统一位置。例如,您可能希望将纹理单元 4 绑定到着色器采样器 2。
(DatenWolf 稍后会来纠正我:)。
我正在尝试理解这段代码:
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture1);
glUniform1i(glGetUniformLocation(ourShader.Program, "ourTexture1"), 0);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, texture2);
glUniform1i(glGetUniformLocation(ourShader.Program, "ourTexture2"), 1);
这是相关的着色器代码:
#version 330 core
...
uniform sampler2D ourTexture1;
uniform sampler2D ourTexture2;
void main()
{
color = mix(texture(ourTexture1, TexCoord), texture(ourTexture2, TexCoord), 0.2);
}
因此,据我了解,在激活 GL_TEXTURE0
之后,我们将 texture1
绑定到它。我的理解是这将 texture1
绑定到第一个 sampler2d.The 我不明白的部分是,为什么我们需要使用 glUniform 调用。
这是一个间接的。您选择在位置 GL_TEXTURE0 输入的纹理,然后告诉着色器中的制服从同一位置获取其纹理。有点像这样(为图表道歉)。
第一行是纹理单元位置,第二行是着色器统一位置。例如,您可能希望将纹理单元 4 绑定到着色器采样器 2。
(DatenWolf 稍后会来纠正我:)。