OpenGL shader 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);
}

在某个时候,我停止发送纹理1的数据,但是忘记了从着色器中删除代码。显然,这是一个错误,程序无法正常运行,但是与固定代码并从着色器中删除与Texture1相关的内容相比,当我发现此错误时,我发现颜色看起来更深而不平坦。

这就是我所拥有的

enter image description here

现在我了解到,一旦添加适当的照明并且所有纹理将不再看起来平坦,但是当我将texture0数据(我实际设置的纹理)与texture1数据(这是真实的)相乘时,我仍然困惑到底发生了什么尚未设置)。

sampler2D的默认值是什么?是什么导致这种颜色偏移?

评论
  • hquia
    hquia 回复

    By default, samplers are bound to texture unit 0. I guess the look you got could be that you also attached texture unit 0 to texture0 and basically multiply the texture with itself.