【问题标题】:OpenGL ES 2.0 GPU accelerated geometry sortingOpenGL ES 2.0 GPU 加速几何排序
【发布时间】:2013-08-13 09:03:06
【问题描述】:

我有一个当前使用 OpenGL ES 1.1 的 3D 应用程序,大多数网格在应用程序中是硬连线的并且是静态的(它们不会移动),因此深度测试允许使用硬连线排序有效地绘制透明几何图形。

现在我想从 3D 编辑器加载世界,并添加一些透明的动态对象(几何可以是任意顺序),这会导致深度测试从后面在几何中绘制“洞”,即正在使用 OpenGL ES 1.1 深度测试在前面的几何图形之后渲染。

我很快就会迁移到 OpenGL ES 2.0,所以我想知道是否有 GPU 加速排序来绘制背面的几何图形,以便以正确的方式进行混合。

【问题讨论】:

    标签: opengl-es-2.0 opengl-es-1.1 depth-testing


    【解决方案1】:

    OpenGL ES 2.0 不能为您解决任何几何顺序问题。在发出 OpenGL ES 2.0 绘制调用之前,您仍然需要对对象进行排序。

    【讨论】:

    • 请参阅this extract。我对 OpenGL ES 着色语言完全陌生,但似乎我想要的与这些实现相去甚远。
    • 嗯,这似乎很难。如果你敢就去做 :) 虽然你可以使用这种方法实现快速排序,但在练习中从帧缓冲区读取颜色数据通常非常昂贵,以至于它会使这种优化变得无用。
    • @rraallvv 好吧,您可能能够根据您的需要实现一些 GPGPU 排序算法,但是 OpenGL 并没有表现出开箱即用的任何东西(从概念上讲,它并不是真的用 OpenGL 对你的对象进行排序,而是通过传统的排序算法对它们进行排序,并滥用 OpenGL 着色器进行计算任务),我不会打赌它会给你的少数对象带来任何好处(不要告诉我你的世界有很多对象,只要它们至少不在 1e5 或 1e6 的联盟中)。
    • @rraallvv 就像 keaukraine 的评论也暗示,虽然 OpenGL ES 2.0 具有基本的顶点和片段着色器,但它缺少许多允许您实际使用这种 GPGPU 排序算法的输出,用于立即渲染,无需往返 CPU,这在您的情况下需要以正确的顺序分派绘制调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    相关资源
    最近更新 更多