2012-05-18 56 views
6

我已經使用如何更改FloatBuffer的內容,保持性能?

floatbuffer.put(float[]); 

嘗試,但因爲我處理超過200個平方,全部用diferent紋理座標將要更新的每一幀,我的FPS下降厲害,遊戲變得太遠,流體。你認爲在badlogicgames.com上提到的方法,而不是使用floatbuffer,而是使用intbuffer,但是,同樣的事情,在緩衝區的方法「put」的時刻是相同的。

所以,我怎麼能更新所有我最好的性能floatbuffers?

編輯:我已經解決了我的問題,「put」方法本身並不慢,問題是當每個floatbuffer初始化一個新的float時,而不是那個,我只是改變了包含的每個元素的值floatarray和避免許多GC活動..以及我認爲。

回答

1

有許多方法可以提高性能。簡單地說,這裏有幾個:

1)初始化floatbuffer和應用轉化中每個每一幀: - 如果你的方形在屏幕上移動,在floatbuffer一旦將它們放置,然後申請一個獨立的矩陣轉化爲每一個。在這種方法中,您只需填充一次floatbuffer,然後每次更新轉換。

2)在floatbuffer中只放入獨特的形狀 - 如果你的任何正方形是相互重複的,每幀調用相同的緩衝區以節省內存。

3)使用頂點緩衝區對象和索引緩衝區對象 - 聽起來你可能已經做到了,但將數據存儲在頂點緩衝區中,並使用數組的索引調用頂點。

如果您仍然有問題,我建議看看本教程:http://www.learnopengles.com/android-lesson-one-getting-started/