【问题标题】:Polygon Depth Sorting in c#c#中的多边形深度排序
【发布时间】:2014-08-12 11:45:56
【问题描述】:

我正在用 c# 编写一个游戏,使用 opengl 即时模式渲染。很多时候,透明多边形由于排序不正确而无法正确显示。我一直在搜索,但找不到有关如何快速进行深度排序的教程。我的尝试方法是使用 List.sort 从相机计算每个透明三角形的深度,但这非常慢(每帧秒数,而不是每秒帧数)

有标准的深度排序方法吗? 有没有关于如何做到这一点的 c# 好的教程? 有没有快速的方法?

【问题讨论】:

    标签: c# sorting opentk depth-testing


    【解决方案1】:

    半透明多边形的顺序无关渲染可能是以通用方式正确处理的最痛苦的效果之一。这就是为什么人们使用各种技巧,在速度和质量之间做出不同的权衡。最简单的方法是在两遍中简单地渲染你的几何图形:

    1. 渲染所有不透明的几何体。
    2. 禁用深度写入GL.DepthMask(false) 并渲染半透明几何体。

    这样,您的半透明多边形将针对不透明多边形进行深度测试,但不会修改深度缓冲区(即它们不会针对其他半透明多边形进行深度测试。)

    这简单、快速并且避免了对多边形进行排序的必要性。缺点是它仅适用于使用加法或乘法混合(所谓的“交换”混合模式)的半透明效果。对于其他混合效果,您要么必须对半透明多边形进行排序,要么使用深度剥离等技术。

    参考资料:

    1. http://www.openglsuperbible.com/2013/08/20/is-order-independent-transparency-really-necessary/
    2. https://gamedev.stackexchange.com/questions/43635/what-is-the-order-less-rendering-technique-that-allows-partial-transparency
    3. https://developer.nvidia.com/content/interactive-order-independent-transparency
    4. http://developer.download.nvidia.com/SDK/10/opengl/src/dual_depth_peeling/doc/DualDepthPeeling.pdf

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-09
      • 1970-01-01
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      • 2011-05-17
      相关资源
      最近更新 更多