2011-10-28 61 views
2

我的意思是,如果我想爲紋理使用位圖,我應該確保該位圖儘可能小以便從紋理中節省內存嗎? (當然,在創建紋理後我會丟棄位圖)。或者我可以只使用512x512 bmp,而OpenGL會自動製作基於更小尺寸的紋理(因爲它只是一個突破遊戲中的球)?OpenGL紋理的分辨率是否自動縮小?

因爲我可以想象,如果要以多種分辨率(從ldpi手機到平板電腦(Android ...))使用位圖,需要花費大量時間來計算出完美的位圖大小。或者我必須爲同一圖像創建不同大小的圖像,如512,256,128。 。 。 ?

回答

1

一個OpenGL紋理是你創建(使用glTexImage2D,例如)要大。如果您想從位圖創建紋理,則可以使紋理與位圖一樣大,或者自己以某種方式縮放位圖數據。 OpenGL應該如何自動爲您的應用程序自動獲知最佳的紋理尺寸,讓我們一起爲您縮小尺寸,這當然是您的工作。

如果你真的在談論自動生成mipmap,那麼這是可能的,你應該看看薩爾瓦多的答案。但是如果你真的說到OpenGL,爲你的紋理選擇「最佳」尺寸並且使用完全不同尺寸的圖像初始化它的數據,那麼這絕對不可能。

+0

好吧,openGL自動調整大小是有點愚蠢的我,但mipmapping不是我真正想要的,因爲它是一個2D的唯一遊戲。我現在正在尋找一個縮小的bmp。 – user717572

+0

那麼,如果一個合適的答案不存在,我該怎麼辦? – user717572

+0

@ user717572您可以不接受該問題。我知道這聽起來有點自私,但我確實正確地回答了你的問題。你想知道OpenGL是否可以自動縮小位圖來用作紋理,並且我給出了正確的答案(不是不行),如果你喜歡這個答案或者沒有。或者你對答案有些不滿?然後隨意問他們。 –

1

您是否在談論mip地圖生成? http://www.swiftless.com/tutorials/opengl/mipmap_generation.html

本頁爲您提供了一個通用示例,介紹如何使用glu庫在計算機應用程序中生成mipmap。我真的不太瞭解android(仍然),但是如果你不告訴opengl這樣做,opengl當然不會使用mip地圖。 使用mipmap可以提高性能和渲染質量。 在512x512像素圖像的公羊mipmaps沒有得到太多的內存。 您將使用最大級別數加載512x512,256x256,128x128,64x64,32x32,16x16,8x8,4x4,1x1的相同圖像,但您可以選擇僅保存前3或4級。由於ram的數量呈指數級下降,所以您添加的級別越高,更高的級別將只消耗部分字節的內存。

也看到這個問題http://www.gamedev.net/topic/611182-android-and-mipmaps/