我正在寫一個使用OpenGL的小遊戲(通過JOGL進行Java編程,但我幾乎沒有想到這一點),而且我最近得到了一些關於OpenGL錯誤「1285」的錯誤報告,這些錯誤似乎表明「out的記憶「。我在創建新紋理後檢查glGetError
時發現了這一點,這讓我感覺我的紋理內存不足了。OpenGL:紋理內存不足?
但是,這讓我感到驚訝。 OpenGL是否應該爲我管理紋理內存,根據需要在GPU和進程內存之間交換紋理?當然,glTexImage2D
的規格並不包含任何「內存不足」錯誤,因爲任何可能的錯誤條件。
這是OpenGL驅動程序普遍接受的做法,儘管規格?儘管有規範,只有一些司機會這樣做嗎?如果我在glTexImage2D
之後發現此錯誤,是否需要注意刪除尚未使用過的紋理?或者,我可能在這裏看到了OpenGL的錯誤報告並不完整地向我傳達的信息?
編輯:有關更多信息,不幸的是,我不能自己調試問題,因爲我沒有得到它。從人們寄給我的報告中讀出,絕大多數受此影響的人似乎都在使用英特爾卡,但我也發現了一些nVidia卡(甚至是680)。
我希望自己能夠嘗試一些事情,但不幸的是,它不是我得到任何錯誤,所以我只能看看我得到的報告正文。不幸的是,幾乎沒有一個來自64位JRE,所以我不能做很多比較。 – Dolda2000
但是,我懷疑這是地址空間碎片的情況。 JRE在一個連續映射中分配它的堆(在這種情況下爲512 MB),所以它內部的頻繁分配不應該影響OpenGL的內存分配,而且我從未見過JRE過程變得如此之大以至於擔心簡單地用完了地址空間。整個過程只需要大約1GB的駐留內存,所以如果除去嚴重的碎片,我想應該留下很多虛擬空間。 – Dolda2000
@ Dolda2000:在剩餘的地址空間中,是否有足夠的*連續*空間來保存大型紋理圖像? – datenwolf