2011-03-17 71 views
2

我正在編寫Android上的2D遊戲,並針對具有最低OpenGl ES 1.1支持的手機。呈現2D動畫精靈的最佳方式openGl ES

我目前正在研究創建我的動畫sprite類,它基本上是一個具有不斷變化的紋理來提供動畫的四邊形。

我想堅持Opengl 1.1,所以我想避免着色器,並想知道其他人如何接近動畫精靈的實現。

我的想法最初是要麼:

  1. 有一個質地單一頂點緩衝對象座標集,然後用大量的預裝紋理會在運行時按照正確的順序被交換的。
  2. 只有一個紋理精靈表,並在運行時修改紋理座標以顯示精靈表的coorect子部分。

是否有更聰明或更有效的方法來做到這一點沒有着色器?

謝謝

回答

2

如果您只有兩個選項,請選擇#2。

不過,我建議制定和緩存爲最接近內存每個精靈幀到頂點緩衝區中的所有四的頂點集到GPU。或者只是生成新的sprite quad頂點併爲每個繪圖指定它們。這是通過緩存在性能與內存之間折衷的問題。考慮單幀的內存消耗頂點。

  1. 更改GPU內部狀態是一個很昂貴的操作。當然,包括紋理對象交換。儘可能避免這種情況。 這是巨大的紋理地圖集用於傳統的遊戲開發。將資源(包括頂點)轉移到VRAM(距離GPU最近的存儲器)可能是昂貴的,因爲它們需要通過較慢的總線進行復制。這與服務器 - 客戶端情況類似。 GPU + VRAM是服務器,CPU + RAM是通過PCI總線網絡連接的客戶端。但是,這可能因系統結構和內存/總線型號而異。