我正在尝试使用WebGL制定透明度策略,以支持封装另一个透明对象的情况。
正如http://learningwebgl.com/blog/?p=859所述,概念上我们可以
我在这里有点天真,我很欣赏经验丰富的图形专业人士让我说得对。传统上(使用固定功能管道),我想我会将这些对象分解为面部列表,对它们进行深度排序,然后按照从远到接的顺序渲染它们,同时在每个面上启用/禁用混合/深度。
但是在这种情况下如何使用WebGL进行透明化,我们将整个几何体作为单片VBO加载到GPU上?
任何人都有任何技术提示或链接?
欢呼声, 林赛
答案 0 :(得分:0)
我不是专家,但我可以告诉你,你可以先渲染所有不透明模型(并启动,使用不支持alpha的着色器),然后渲染透明模型(启用透明度的着色器) 。此解决方案需要您“查看z-order”模型,因为您需要先渲染更远的模型。
这个解决方案有一个巨大的缺陷:双面透明模型效果不佳。
答案 1 :(得分:0)
据我所知,你必须将你的封闭模型拆分成单独的VBO部分并对这些部分进行深度排序。这些部分不必是单独的面 - 只要小到足以使每个部分不同时位于封闭对象的前面和后面。
正如Chiguireitor所指出的那样,可以先绘制任何不透明的东西,但必须对透明度进行排序(或严格使用加法或减法混合)。