opengl - 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);
}
在某个时候,我停止发送纹理 1 的数据,但我忘记从着色器中删除代码。显然这是一个错误,程序没有按预期工作,但我注意到,与我修复代码并从着色器中删除与纹理 1 相关的内容相比,当我遇到此错误时,颜色看起来更深且不那么平坦。
所以这就是我所拥有的
现在我明白了,一旦我添加了适当的照明并且所有纹理看起来不再平坦,但我仍然对当我将纹理 0 数据(我实际设置的纹理)与纹理 1 数据相乘时到底发生了什么感到困惑(这是未设置)。
sampler2D 的默认值是什么?是什么导致了这种颜色偏移?
解决方案
默认情况下,采样器绑定到纹理单元 0。我猜你得到的外观可能是你还附加了纹理单元 0,texture0
并且基本上将纹理与其自身相乘。
推荐阅读
- amazon-web-services - AWS RDS:user/redshift 无权执行:rds:DescribeDBInstances
- javascript - 在 JavaScript 中使用 Kotlin 标准库
- bash - 如何将具有递增数字的文件重命名为具有该数字加 10 的文件
- javascript - 如何更改与其他一组同名的 html 值的值?
- c++ - 是
在 C++17 中函数必须是“noexcept”吗? - azure - 为什么我的 Azure 分析服务需要 Azure 本地数据网关?
- sql - 有没有办法在 Teradata SQL 视图上创建索引?
- python - Python psutil memory_info 上限为 4.0G
- python - 如何根据每行的多个最大值更新矩阵?
- ios - 在 Siri 集成中面临自定义意图的问题