0

我正在尝试使用 WebGL 制定一种透明策略,以支持包含另一个透明对象的情况

http://learningwebgl.com/blog/?p=859所述,从概念上讲,我们可以

  1. 渲染背景
  2. 启用混合并禁用深度测试
  3. 渲染前景

我在这里有点天真,我很感激一位经验丰富的图形专家来帮助我。传统上(使用固定功能管道),我想我会将这些对象分解为一个面列表,对它们进行深度排序,然后以远到近的顺序渲染它们,同时在每个面的基础上启用/禁用混合/深度。

但是在这种情况下如何使用 WebGL 实现透明性,我们将整个几何图形作为整体 VBO 加载到 GPU 上?

任何人有任何技术提示或链接?

干杯,林赛

4

2 回答 2

0

我不是专家,但我可以告诉您,您可以先渲染所有不透明模型(并启动,使用不支持 alpha 的着色器),然后渲染透明模型(启用透明着色器)。此解决方案需要您“查看 z 顺序”您的模型,因为您需要先渲染更远的模型。

但是,这种解决方案有一个巨大的缺陷:双面透明模型效果不佳。

于 2011-07-08T17:11:01.957 回答
0

据我所知,您必须将封闭模型分解为单独的 VBO 的部分,并对这些部分进行深度排序。这些部分不必是单独的面——只要足够小,每个面就不会同时位于封闭对象的前面和后面。

正如 Chiguireitor 所指出的,可以先绘制任何不透明的东西,但必须对透明度进行排序(或使用严格的加法或减法混合)。

于 2012-04-09T21:16:50.853 回答