2012-02-03 24 views
1
  1. 使用自己的物理引擎計算點數,然後在每次顯示時發送給OpenGL,例如,與glBufferSubDataArb,與飛行桶的更新的座標在一個有很多3D移動對象的大型OpenGL遊戲中,點通常如何更新?

  2. 有很多具有相同的世界座標桶,但不知何故你告訴OpenGL使用不同的矩陣轉換。當一個桶移動時,你不知何故更新它的變換矩陣,以反映它在世界上旋轉/翻譯的方式。

  3. 一些其他的方式

而且,如果答案是#2,有沒有簡單的方法來做到這一點,例如用抽象代碼而不是自己操縱矩陣

回答

5

OpenGL不是場景圖,它是一個繪圖API。最新版本的OpenGL(OpenGL-3核心及以上版本)反映了這一點,根本不管理矩陣狀態。事實上,答案是2,或多或少。實際上,你需要處理矩陣數學。 OpenGL-3不再爲此提供任何原語。

通常情況下,物理引擎會將對象視爲具有凸包的剛體。表示這種身體的自然方式是使用4×3矩陣(3×3旋轉矩陣和平移向量)。因此,如果使用物理引擎,無論如何都會提供這樣的矩陣。

此外,您必須瞭解OpenGL不會維護場景,因此沒有任何「更新」。您只需使用OpenGL繪製數據。矩陣按需要加載。

相關問題