Opengl es 如何使用WebGL/OpenGLES实现透明-透明外部对象*封闭*内部对象

Opengl es 如何使用WebGL/OpenGLES实现透明-透明外部对象*封闭*内部对象,opengl-es,transparency,webgl,Opengl Es,Transparency,Webgl,我正在尝试使用WebGL制定一种透明策略,以支持透明对象包围另一个对象的情况 如上文所述,从概念上讲,我们可以 渲染背景 启用混合并禁用深度测试 渲染前景 我在这里有点天真,我希望有一位经验丰富的图形专业人士帮我纠正错误。传统上(使用固定的函数管道),我想我会将这些对象分解成一个面列表,对它们进行深度排序,然后按照从远到近的顺序渲染它们,同时启用/禁用每个面的混合/深度 但是,在这种情况下,如何使用WebGL实现透明度,我们将整个几何体作为单片VBO加载到GPU上 有人有任何技术提示或链接吗 干

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

如上文所述,从概念上讲,我们可以

  • 渲染背景
  • 启用混合并禁用深度测试
  • 渲染前景
  • 我在这里有点天真,我希望有一位经验丰富的图形专业人士帮我纠正错误。传统上(使用固定的函数管道),我想我会将这些对象分解成一个面列表,对它们进行深度排序,然后按照从远到近的顺序渲染它们,同时启用/禁用每个面的混合/深度

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

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

    干杯,
    Lindsay

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


    不过,这种解决方案有一个巨大的缺陷:双面透明模型不能很好地工作。

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

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