ShaderDesigner多纹理不起作用

时间:2017-02-08 11:43:54

标签: opengl glsl shader

我使用ShaderDesigner版本1.5.9.6开发GLSL。如此困惑,为什么多纹理不能工作!有人知道吗?谢谢答案。

顶点着色器:

void main()
{
    gl_TexCoord[0] = gl_MultiTexCoord0;
    gl_TexCoord[1] = gl_MultiTexCoord1;
    gl_Position = ftransform();
}

Fragment Shader:

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。

1 个答案:

答案 0 :(得分:1)

好的我认为第二张图片的纹理坐标存在一些问题。

着色器没有问题。尝试更换此行。它对我有用。

gl_TexCoord[0] = gl_MultiTexCoord0;
gl_TexCoord[1] = gl_MultiTexCoord0; // this line replaced...
gl_Position = ftransform();

不幸的是我找不到在应用程序中纠正这个问题的方法。当您编写自己的OpenGL应用程序时,您将不会遇到此问题。

两个纹理单元0和1就是这些。

TextureUnit0

TextureUnit1

这是输出。

Sphere showing rocky texture and four color texture mixed from example