2012-12-10 53 views
1

如何在opengl 2(JOGL)中高效地繪製大量可移動立方體?我必須構建一個巨大的VBO/VAO,其中包含所有的立方體副本並在單個調用中繪製?或者爲每個通過MVP矩陣的立方體的實例調用glDraw可以移動細節立方體? 當然立方體共享相同的紋理,頂點,normak等 我需要在繪製10000+但可能性達到最佳的性能改變partiular立方體的POS在opengl 2渲染10000+動態立方體

回答

1

如果單獨繪製每個立方體,你正在尋找一個非常高的批次數量,這將非常糟糕。

使用一個大的VBO將是最快的,但如果您需要更改幾何圖形,這並不好。您可能可以將幾何分成幾個批次(例如,執行1000次/批次)。

也許考慮實例化或僞造實例作爲另一種選擇。 http://www.gamerendering.com/2008/10/21/instancing/

+0

我不確定JOGL 2.0是否支持ARB_instanced_arrays擴展 – user1338830

+0

正如我理解的實例仍然需要每立方1個繪製調用? – user1338830

+0

沒有實例化沒有每個立方體有1個繪製調用。 「該擴展提供了一種方法,可以使用單個繪圖調用渲染多個對象 ,以及一個」實例ID「變量 ,頂點程序可以使用它來計算每個實例的值,通常是對象的變換。」 – Pete

5

使用單一VBO所有立方體的幾何形狀,法線等

使用GLSL着色器變換使用從一個屬性VBO一個數據立方體。 (glVertexAttribPointer等)。