0
當加載在Android OpenGL的紋理數據,用差,以應付在座標的Android和OpenGL之間系統我看到的典型的圖案是在上傳之前翻轉位圖:不幸的是加載並翻轉Android位圖作爲OpenGL紋理時避免加倍內存?
Bitmap original = BitmapFactory.decodeStream(...);
Matrix flip = new Matrix();
flip.postScale(1f, -1f);
Bitmap toUpload = Bitmap.createBitmap(original, ..., flip, true);
original.recyle();
對於短暫的時間量這些位圖所需的內存翻倍,因爲原始版本和翻轉版本都是駐留的。這對於非常大的圖像如紋理圖集是有問題的。
有沒有一種巧妙的方法來避免這種加倍?例如,在原處操作原稿,還是在單個步驟中加載和轉換?當然,我總是可以操作源數據(即,預先翻轉圖像)或紋理映射(即,反轉V座標),但是我希望在圖像加載期間解決這個問題作爲分離問題的一種方式。
我不知道你使用'Bitmap'類,但assuiming它允許對圖像數據的隨機訪問,你當然可以翻轉數據就地 - 如果你想在同一時間,一個字節。另一種選擇是使用'glTexSubImage2D'分別上傳每個圖像行。 – derhass
是的,真的,手動操縱總是一種選擇。我擔心這可能太慢而不可行,但我必須通過實驗做出決定。 – errcw