2016-04-25 28 views
-1

我喜歡電腦圖形。什麼是繪製大量半透明三角形的最快引擎?

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

繪製帶有4個顏色通道RGBA三角形,並允許點和方向燈的繪製。

紋理將是一個很酷的附加功能,但我再次尋找最快的引擎,而不是最實用的。相機動畫和對象動畫將勢在必行。

終於有了這個問題的2個答案,1個用於一般開發,一個用於網絡,但是如果你只能說一個或另一個,你的貢獻將不勝感激!

回答

1

你最好的選擇可能是OpenGL。在網絡的情況下,您可以使用WebGL,對於原生桌面或移動開發,您可以直接使用OpenGL。

+0

Aight所以我有一些與3js的webgl的經驗看到https://krewn.github.io不幸的東西關於它只能在鉻...適用於OpenGL與WebGL的關係和差異是什麼? – kpie

+1

關係是它們基於相同的API。不同之處在於OpenGL適用於桌面,WebGL適用於瀏覽器。 WebGL的一個問題是它並不是到處都支持,用戶可能不得不在瀏覽器中明確地打開它。 – user1118321

+0

還有什麼其他的表現接近? – kpie

2

有相當多的引擎可以完成這項工作。其中最着名的就是Unity,例如Unity,其中還有很多其他功能都很出色。

但我認爲你並不是真的在尋找一個引擎,而是一個API。例子是OpenGL或DirectX(已經提到)。 OpenGL甚至有一個特定的Web內容(WebGL)。

還有一個問題:三角形應該是半透明的。另一個答案中缺少的是如果三角形已經排序的問題。例如OpenGL可以很好地渲染物體,哪個三角形離觀察者最近並不重要。它在飛行中「搜索」這一個,只顯示可見的三角形。但使用半透明三角形時,可以看到不同的三角形彼此重疊,因此不僅需要知道哪個三角形位於前面,而且哪個三角形直接位於後面,等等。 OpenGL爲此功能提供了混合,但在渲染前需要手動排列半透明三角形。這被稱爲畫家算法。雖然對象排序是一個複雜的問題,尤其是對於大量的對象,這可能需要很長時間。

爲此,還有另一種稱爲「深度剝離」的解決方案。這個想法是用OpenGL多次渲染所有的三角形。你第一次得到所有在前面的三角形。現在你再次渲染所有的三角形,但沒有在前面的三角形。這導致觀察者的第二個最接近的三角形。之後,所有的三角形再次呈現,但沒有前兩個「果皮」,這導致第三個最接近的三角形,依此類推。這是昂貴的,因爲所有東西都需要渲染多次,但是在存在大量三角形的情況下,這比排序更快(並且由於重疊的三角形更精確)。在大多數情況下,四個皮就足以獲得好的結果。爲進一步閱讀,我建議Everitt的以下文件:http://gamedevs.org/uploads/interactive-order-independent-transparency.pdf

+0

Upvote僅供參考。我在90年代使用這種技術的時候,我寫了很多代碼來做3D圖形。不知道它有一個名字 - 「深度剝離」。這是一個好名字。 –