2011-08-28 77 views
0

我目前有兩個紋理應用於單個對象。最終會有更多的添加到這個,但我很難讓當前的兩個正常工作。具有多個紋理的gl_fragColor

目前,我正在將我的fragcolor設置爲添加在一起的兩幅圖像。從字面上看所有我做的是類似於:

gl_FragColor = texture1 + texture2; 

我肯定有一個更好的方式做這樣的事情開始的,但它也創建在圖像重疊加在一起的問題(顯然) ,這不是我正在嘗試用我目前的項目。

我不確定這是否只是我的fragColor的問題,其中有一些內置的GLSL功能可以做這樣的事情,或者如果我需要做一些事情,比如將圖像以某種其他方式。

編輯::顏色加入我的意思的例:要在着色器融合了兩個紋理,而不是與普通混合做的http://i.imgur.com/0vH4F.png

+2

只要我們不知道你是什麼「試圖處理你當前的項目」,我們不能給你任何解釋。當然,將兩種顏色混合在一起可以起作用,但如果你想以不同的方式合併它們,那麼就這樣做。否則告訴我們你想達到什麼效果。 –

+0

我對此表示歉意,我不知道那是多麼糟糕的措辭。我想要做的是將圖像按照特定順序分層,而不是混合在一起。我已經搞砸了很多,但我似乎無法弄清楚如何讓它不以某種形式融合在一起。我敢肯定,這是一件簡單的事情,會讓我感到有點緊張。 – Shamrock

+0

如果您希望它們分層並且沒有以任何方式混合,那麼這將始終導致第二種紋理顏色。 –

回答

2

我把它。像這樣的東西應該可以工作,我相信 - 如果你做出假設,你可以簡化這個。

gl_FragColor = backgroundcolor; 
gl_FragColor = (gl_FragColor*(1-texture1.a))+(texture1*texture1.a); 
gl_FragColor = (gl_FragColor*(1-texture2.a))+(texture2*texture2.a); 

編輯:

最終的答案在這裏結束了常規混合,並在片段着色器不混合。

+0

這個答案不是最後一個我的特殊問題,但是由於Arne的耐心幫助我解決問題而解決了問題。對於其他可能有類似問題的人,請務必閱讀我和Arne之間的聊天內容,並將其與第一篇文章中的評論鏈接起來,因爲在那裏可以找到更好的解決方案。再次感謝你的所有時間,阿恩。 – Shamrock