[英]OpenGL shader what is the default value of sampler2D
我是 OpenGL 和着色器的新手,我正在尝试将多个纹理发送到着色器,我发现有些奇怪。
所以这就是我所拥有的。 我有一个看起来像这样的片段着色器。
#version 440 core
in vec3 vs_position;
in vec3 vs_color;
in vec2 vs_texcoord;
in vec3 vs_normal;
out vec4 fs_color;
uniform sampler2D texture0;
uniform sampler2D texture1;
void main() {
fs_color = texture(texture0, vs_texcoord) * texture(texture1, vs_texcoord);
}
在某些时候,我停止为 texture1 发送数据,但我忘记从着色器中删除代码。 显然这是一个错误,程序没有按预期工作,但我注意到,与我修复代码并从着色器中删除与 texture1 相关的东西相比,当我有这个错误时,colors 看起来更深而且不那么平坦。
所以这就是我所拥有的
现在我明白了,一旦我添加了适当的照明并且所有纹理看起来都不再平坦但是我仍然对将 texture0 数据(我实际设置的纹理)与 texture1 数据(这是未设置)。
sampler2D 的默认值是多少?是什么导致了这种颜色偏移?
默认情况下,采样器绑定到纹理单元 0。我猜你得到的外观可能是你还将纹理单元 0 附加到texture0
0,基本上将纹理与自身相乘。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.