2012-08-16 42 views
-1

可能重複:
How can I load 8 bit bmp with OpenGL?可以通過預加載一堆jpeg圖像而不是bmp來節省內存嗎?

我需要加載大量的圖片儘可能多的,然後再播放這些動畫。所以我想盡量減少每個圖像的大小。

我的問題是如果我加載一個jpeg圖像文件,我的機器會以bmp格式存儲它嗎?目前,我正在使用OpenGL加載bmp圖像(每個大約3.5 MB)。 600 bmp文件已經超出我的記憶。我怎麼能加載更多,比如說2千。

回答

0

我的問題是如果我加載一個jpeg圖像文件,我的機器將它存儲爲bmp格式?

您的機器會將它作爲原始像素保留在內存中,除非您使用的壓縮紋理格式與JPEG格式不同。

文件格式對硬件和OpenGL沒有意義。

如何加載更多,比如說2千。

您不應該。如果您正在播放動畫,請在顯示圖像時加載圖像,然後再將其刪除。對於OpenGL,您應該使用glTexSubImage2D來替換紋理對象的內容。

+0

謝謝,datenwolf。實際上,我有一個類似幻燈片的程序來播放動畫,就像您所說的「在顯示時加載圖像,然後將其刪除」,但幀速率較低。我想要60 fps。任何想法? – 2012-08-19 14:33:24

+0

@ChenDanielJinzhao:在現代硬件上60fps應該很容易實現。首先,您應該使用像素緩衝區對象,以便您可以異步地將圖像數據加載到OpenGL內存。如果您有OpenGL-4可用,請使用glTexStorage和glTexSubImage2D的組合來減少創建實際紋理對象的開銷。 – datenwolf 2012-08-19 14:42:32

0

您可以查看以更加動畫友好的格式存儲您的圖像。想起了視頻

如果您只需要一次圖像 - 顯示後立即從內存中丟棄它們。

使用DXT打包圖像。質量略有下降,您可以獲得x4/x8壓縮比。

檢查你的OpenGL設置,你使用自動生成的mipmap,你需要它們嗎?

+0

感謝Krom,我使用3D_Max預先生成的位圖,然後嘗試使用OpenGL將這些圖像作爲動畫以60 fps的幀速率循環播放。所以我不能丟棄它們。在播放過程中,我需要通過在每一步跳過一個或多個圖像來改變動畫的速度。如果我清楚,我不會。但我希望你能幫我解決這個問題。非常感謝你。 – 2012-08-19 14:24:50

相關問題