2011-08-28 71 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