2010-11-14 109 views
2

我現在處於一種狀況。OpenGL骨骼動畫性能

您會發現,使用renderMesh()函數渲染模型時,遊戲速度大約爲30fps。渲染到顯示列表並運行時,fps達到大約450fps。這是1500%的收益。我爲此欣喜不已,因爲這意味着OpenGL不是延遲的原因,而是功能,可以優化。

但現在我想渲染一個皮膚網格,所以我需要更新每個幀的頂點位置,但沒有別的。因此,運行renderMesh()會浪費時間,因爲將所有面拼接在一起的開銷是不必要的。我想要緩存這些數據,但由於易變的頂點座標,顯示列表將不起作用。

什麼是最好的解決方案(除了優化我的renderMesh(),我會做任何事情)。

+0

當我們沒有看到實際的代碼時,提示改進有點困難。如果你正在做簡單的蒙皮,你甚至可以寫一個GLSL着色器來完成這項工作。 – Bart 2010-11-14 09:45:56

回答

3

你可以使用VBOs並得到改善。列表應該相同或更好。改善1500%是奇怪的。你確定你測量FPS嗎?

+1

是的,我正在測量基於CPU的滴答,沒有更準確的。 – 2010-11-14 09:54:39

+0

vbos看起來很理想,謝謝。 – 2010-11-14 09:56:45

5

我只能建議:

  1. 使用較少的頂點
  2. 移動你的頂點(或大部分)的剛性羣體---這樣每個組可以是一個列表
  3. Vertex Buffer Objects