2014-04-01 119 views
0

我正在使用TextureIO加載JOGL中的七兆字節紋理,但大約三秒後,程序崩潰而沒有顯示任何內容,顯示爲OutOfMemoryErrorJOGL大紋理輸出內存不足

是的,據我所知,一個七兆字節的圖像是一個荒謬的大小,但我仍然想要加載它。順便說一下,是8192 x 4096紋理應該是七兆字節?

我已經考慮過將圖像分割成幾個較小的紋理並一次加載一個紋理的想法,但這與我已經寫過的球體類沒有很好的配合。我想我可以做到這一點,如果我絕對有,但我想避免這種特殊的行動。我沒有運行任何類型的嵌入式設備(Android,iPhone等),我有一個好的2G內存,不確定GPU的內存,但我願意足以容納它七兆字節的紋理。如果有任何信息有幫助,我有32位Java安裝和32位Windows計算機。

關於爲什麼我內存不足以及如何修復它的任何想法?

編輯:我可能是對的,那麼,每個人都經歷可能會拍打他們的額頭,但錯誤說:java.lang.OutOfMemoryError: Java heap space

我猜「Java堆空間」部分將幫助解決問題。

回答

0

只需嘗試使用-Xms和-Xmx來增加啓動時堆的大小及其最大大小: Oracle Java manual

請注意,無論如何,你的顯卡可能不支持這麼大的紋理,請看GL.GL_MAX_TEXTURE_SIZE

你應該問你關於JOGL的問題its official forum

+0

對於'GL.GL_MAX_TEXTURE_SIZE',它打印3379.那個數字是多少?千字節?外形尺寸?像素? – Josh

+0

另外,我如何找到當前堆大小? – Josh

+0

GL.GL_MAX_TEXTURE_SIZE是一個OpenGL常量,允許以像素(最大寬度或高度)獲取最大紋理大小。使用我的源代碼獲取最大紋理大小:https://github.com/gouessej/Ardor3D/blob/master/ardor3d-jogl/src/main/java/com/ardor3d/renderer/jogl/JoglContextCapabilities.java#L126 – gouessej