OpenGL着色器sampler2D的默认值是多少

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 相关的东西相比,当我有这个错误时,颜色看起来更深而且不那么平坦。

这就是我所拥有的

现在我明白了,一旦我添加了适当的光照,所有的纹理都不会再看起来平坦了,但是当我将 texture0 数据(我实际设置的纹理)与texture1 数据(未设置)。

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

默认情况下,采样器绑定到纹理单元 0。我猜你看到的可能是你也将纹理单元 0 附加到 texture0 并且基本上将纹理与自身相乘。