Opengl 使用多重纹理时保持均匀的目的
我试图理解以下代码:Opengl 使用多重纹理时保持均匀的目的,opengl,textures,fragment-shader,Opengl,Textures,Fragment Shader,我试图理解以下代码: glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, texture1); glUniform1i(glGetUniformLocation(ourShader.Program, "ourTexture1"), 0); glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_2D, texture2); glUniform1i(glGetUniformLoc
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。我不理解的部分是,为什么我们需要使用glUniform调用。这是一个间接寻址。选择在位置GL_TEXTURE0处输入的纹理,然后告诉着色器中的统一体从同一位置获取其纹理。有点像这样(为图表道歉)
第一行是纹理单元位置,第二行是着色器均匀位置。例如,您可能希望将纹理单元4绑定到着色器采样器2
(DatenWolf稍后会来纠正我:)。我试图在这里的详细回答中解释这些概念,以及更多内容:。