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

问题描述 投票:0回答:1

我是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发送数据,但我忘了从着色器中删除代码。很明显,这是一个bug,程序没有按照预期工作,但我注意到,当我有这个bug的时候,颜色看起来更深,不像我修复代码并从着色器中删除texture1相关的东西时那么平坦。

所以这就是我的情况

enter image description here

现在我明白了,一旦我添加了适当的光照和所有这些,纹理看起来就不会再平坦了,但我还是很困惑,当我将texture0数据(我实际设置的纹理)与texture1数据(没有设置)相乘时,到底发生了什么?

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

opengl shader
1个回答
3
投票

默认情况下,采样器是绑定到纹理单元0的。我想,你所得到的外观可能是你也将纹理单元0绑定到了...。texture0 并基本与自身的纹理相乘。

© www.soinside.com 2019 - 2024. All rights reserved.