在我的片段着色器中,我有以下代码行:
gl_FragColor = texture2D(texture, destinationTextureCoordinate) * destinationColor;
其中texture
是类型为sampler2D
的统一变量。在我的代码中,我总是将其设置为值“0”。
glUniform1i(_uniformTexture, 0);
是否可以跳过对glUniform1i
的调用,直接在片段着色器中硬编码0?我尝试将texture
替换为0
,但它抱怨它不是有效的类型。
_uniformTexture
只是您着色器中sampler2D
变量的句柄。当您通过调用glUniform1i
发送0
时,您实际上只是告诉采样器从哪里采样,给定一个活动和绑定的纹理(请参见上面的代码编辑)。这里的值为0并不意味着“不采样任何东西”,而是表示从阶段索引0进行采样。您的纹理到底用于什么?我没有看到将其设置为0的好处。 - Ricardo RendonCepeda