2014-09-02 95 views
0

拍攝包含glSurfaceView的應用程序,該應用程序在開始時加載多個單獨的圖像(每個圖像爲GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);)。Android - open gl es 1.1 - 繪製效率

此應用程序必須先調用gl.glBindTexture(GL10.GL_TEXTURE_2D, texture pointer int),然後才能繼續爲「可構造正方形」gl對象繪製不同的紋理。

它是推薦的,而不是加載一個位圖與所有的紋理(即:一個精靈片),然後創建「texturable正方形」,每個映射巨單個圖像的不同區域,像gl.glBindTexture(...)的陣列僅需要被調用一次...?

或者這兩種技術之間可能沒有顯着差異?

回答

1

據我所知,一旦通過texImage2D加載了紋理,綁定紋理只是將原生OpenGL庫指向正確的預加載紋理,所以性能明智,不應該是昂貴的。

但是,您提出了一個很好的選擇,您應該考慮不考慮性能問題。

通常情況下,你需要的紋理不是有兩個維度的權力,但由於OpenGL的要求,無論如何都被設置爲那個大小。這通常會導致非常浪費的內存分配。您使用「精靈表」可以幫助節省將多個位圖加載到紋理中的時間,紋理通常比您要渲染的部分要大。

因爲這個原因,我會建議使用精靈表,因爲它保存了對texImage2D的調用(這非常昂貴),並且還可能節省內存。如果您在要渲染的對象之間切換時正確管理紋理座標,這是我建議的方法。