【发布时间】:2017-02-13 09:56:25
【问题描述】:
我正在使用 ShaderDesigner 1.5.9.6 版开发 GLSL。很困惑为什么多纹理不能工作!有人知道吗?谢谢解答。
顶点着色器:
void main()
{
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_TexCoord[1] = gl_MultiTexCoord1;
gl_Position = ftransform();
}
片段着色器:
uniform sampler2D BaseImage;
uniform sampler2D BlendImage;
uniform float Opacity;
void main()
{
vec4 baseColor = texture2D(BaseImage, gl_TexCoord[0].st);
vec4 blendColor = texture2D(BlendImage, gl_TexCoord[1].st);
gl_FragColor = blendColor;
}
BlendImage 无法在 ShaderDesigner 中显示,尽管 BaseImage 没问题。我肯定已经为两个采样器设置了纹理单元 0 和 1。
【问题讨论】:
-
您在此处定位的 GLSL 版本是什么?
-
看来您在顶点和片段着色器中使用了多个版本的 GLSL。这方面有很多未定义的行为,很可能是您的问题的原因。
-
@Bartvbl 其实我只是在 ShaderDesigner 软件中测试教程代码。没有任何语法错误和编译链接都可以,使用 baseColor 也可以显示正确! GLSL 版本 4.5.0。较新的opengl,道歉。
-
@Bartvbl 我的错,GLSL 版本不确定。 ShaderDesigner ide 仅显示驱动程序功能---供应商:NVIDIA Corporation 版本:4.5.0 NVIDIA 368.81 渲染器:GeForce GTX 750/PCIe/SSE2
-
@Bartvbl:上面的着色器代码是 100% 1.10。更高版本中没有任何内容。这里没有“混合和匹配”。