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

所以这就是我的情况

enter image description here

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

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

解决方案:

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

给TA打赏
共{{data.count}}人
人已打赏
未分类

加载大型图像集会导致进程停止

2022-9-9 9:43:21

未分类

OIDC和OAuth API接入的B2C中,我应该在哪里执行(相当于群组角色)?

2022-9-9 9:54:17

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索