Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 使用多重纹理时保持均匀的目的_Opengl_Textures_Fragment Shader - Fatal编程技术网

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稍后会来纠正我:)。

我试图在这里的详细回答中解释这些概念,以及更多内容:。