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

时间:2016-04-25 04:34:11

标签: web graphics 3d gpu gpu-programming

我喜欢电脑显卡。

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

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

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

最后这个问题确实有2个答案,1个用于一般开发,1个用于网络,但如果你只能说一个或那个你的贡献将不胜感激!

2 个答案:

答案 0 :(得分:2)

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

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

还有一个问题:三角形应该是半透明的。另一个答案中缺少的是三角形是否已经订购的问题。例如,OpenGL可以很好地渲染对象,哪个三角形最接近观察者无关紧要。它"搜索"这一个在飞行中,只显示可见的三角形。但是对于半透明三角形,可以看到不同的三角形彼此重叠,因此不仅需要知道哪个三角形在前面,而是在那之后直接来到哪个三角形,依此类推。 OpenGL为此功能提供了混合,但在渲染之前需要手动订购半透明三角形。这称为Painters算法。虽然对象的排序是一个复杂的问题,特别是对于大量的对象,这可能需要相当长的时间。

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

答案 1 :(得分:1)

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