我正試圖實現用戶可以縮放和平移的世界地圖。我遇到了一個問題,即我的程序內存不足。OpenGL將圖像拼貼到紋理中並耗盡內存
這裏是我的情況:
0)我在C#和OpenGL
1)寫我的節目,我下載下來是這樣的世界是在19兆的詳細圖像的網頁JPG圖片尺寸。每個像素是24位長。
2)當我的程序初始化時,我在運行時將這張圖像切成瓦片。我使用glGenTexture,glBindTexture和glTexImage2d將每個圖塊輸入到OpenGL中。 3)在我的繪圖程序中,我逐一繪製圖塊,並儘量繪製所有圖塊,而不管它們是否在屏幕上(這是我知道的另一個問題)。
對於一個小圖像,一切工作正常。但是,對於大圖像,當我將JPG解碼爲位圖以便將其切分時,我的程序內存佔用空間會突然超過千兆字節。我知道JPG被壓縮,.NET JpegBitmapDecoder對象正在解壓縮一個巨大的圖像,這可能會讓我陷入麻煩。
我的問題是,在這種情況下究竟能做什麼?由於C#解碼代碼是爆炸內存的第一責任方,是否有另一種方法創建切片並將其送入OpenGL,而我應該追求(減去位圖)?
代替JPEG,請使用您的視頻卡已用於壓縮紋理的相同壓縮格式。 – 2013-03-21 19:01:42