绘制大量半透明三角形的最快引擎是什么



我喜欢计算机图形学。

我想知道具有以下功能的最快引擎是什么:

绘制具有 4 个颜色通道 rgba 的三角形,并允许绘制点光源和定向光源。

纹理将是一个很酷的附加功能,但我再次寻找最快的引擎,而不是功能最强大的引擎。相机动画和对象动画势在必行。

最后,这个问题真的有 2 个答案,一个用于一般开发,一个用于 Web,但如果您只能与其中一个交谈,您的贡献将不胜感激!

有很多引擎可以完成这项工作。其中最著名的是例如Unity,您还拥有大量性能良好的其他功能。

但我认为你并不是在寻找引擎,而是在寻找API。例如OpenGL或DirectX(已经提到)。OpenGL甚至有一个特定的Web内容(WebGL)。

还有一个问题:三角形应该是半透明的。另一个答案中缺少的是三角形是否已经排序的问题。例如,OpenGL擅长渲染对象,其中哪个三角形离查看器最近无关紧要。它会动态"搜索"这个,只显示可见的三角形。但是对于半透明三角形,可以看到不同的三角形相互重叠,因此不仅需要知道哪个三角形在前面,而且哪个三角形紧随其后,依此类推。OpenGL 为此功能提供了混合,但在渲染之前必须手动对半透明三角形进行排序。这被称为画家算法。虽然对象的排序是一个复杂的问题,特别是对于大量对象,这可能需要相当长的时间。

为此,还有另一种称为"深度剥离"的解决方案。这个想法是用OpenGL多次渲染所有三角形。第一次你得到前面的所有三角形。现在,您再次渲染所有三角形,但前面没有三角形。这将产生与查看器第二近的三角形。之后,所有三角形将再次渲染,但没有前两个"剥离",这会导致第三个最近的三角形,依此类推。这是昂贵的,因为所有内容都必须多次渲染,但是在三角形数量非常多的情况下,这比排序更快(并且由于重叠三角形而更精确)。在大多数情况下,四次果皮就足够了。为了进一步阅读,我建议Everitt的以下论文:http://gamedevs.org/uploads/interactive-order-independent-transparency.pdf

你最好的选择可能是OpenGL。在Web的情况下,你可以使用WebGL,在原生桌面或移动开发的情况下,你可以直接使用OpenGL。

最新更新