2017-02-08 38 views
0

我使用ShaderDesigner版本1.5.9.6開發GLSL。所以困惑爲什麼多紋理不能工作!有人知道嗎? thx回答。ShaderDesigner多紋理不起作用

頂點着色器:

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。

+0

什麼GLSL版本你在這裏定位? –

+0

看起來您在頂點和片段着色器中使用了多個GLSL版本。在這方面有很多未定義的行爲,可能是你問題的原因。 – Bartvbl

+0

@Bartvbl其實我只是在ShaderDesigner軟件中測試教程代碼。沒有任何語法錯誤和編譯鏈接都可以,也可以使用baseColor顯示正確! GLSL版本4.5.0。更新的opengl,appologize。 – santi

回答

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

+0

你確定好友嗎?我嘗試了這一點,但得到了所有相同的紋理。兩者都是TextureUnit0。 ShaderDesigner有問題嗎? – santi

+0

你改變了紋理嗎?除了說明'gl_MultiTexCoord0'的一行外,不要做任何其他改變;不要更改紋理單元或其他任何東西。 – Harish

+0

我已將輸出照片添加到我的答案中。 @santi – Harish