【问题标题】:ShaderDesigner multi texture not workShaderDesigner 多纹理不起作用
【发布时间】: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。更高版本中没有任何内容。这里没有“混合和匹配”。

标签: opengl glsl shader


【解决方案1】:

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

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

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

很遗憾,我无法在应用程序中找到解决此问题的方法。当您编写自己的 OpenGL 应用程序时,您不会遇到这个问题。

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

这是输出。

【讨论】:

  • 你确定是朋友吗?我试过这个,但得到了所有相同的纹理。两者都是 TextureUnit0。 ShaderDesigner 有问题吗?
  • 你改变了纹理吗?除了声明gl_MultiTexCoord0 的一行外,不要进行任何其他更改;不要更改纹理单位或其他任何东西。
  • 我已将输出照片添加到我的答案中。 @santi
  • 谢谢,伙计,但仍然无法工作。我已经编辑了我的问题并添加了一些图片。您使用的是哪个版本的 ShaderDesigner?我的是 1.5.9.6 @Harish
  • 您是否确定您的 BaseImageBlendImage 在统一变量选项卡中设置为值 01 并且它们都在框中打勾?我正在使用相同版本的 ShaderDesigner。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-28
  • 2014-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多