爲了我的目的,我想清除我的畫布的繪圖表面,並抓取當前的對象,將其保存到管理包裝器中,然後使用它一步後,從畫布的display()
方法(依次調用display(GLAutoDrawable drawable)
方法)。看起來,從display()方法返回後,會發生導致GL對象失效的情況,就像我想通過調用glGenBuffers(1, buffer)
來獲得可用的textureID一樣 - 我接收到0
- 不是有效的紋理ID來加載紋理。JOGL在顯示之外渲染(GLAutoDrawable可繪製)
有沒有辦法讓GL對象在顯示方法之外工作? (gl.getContext().makeCurrent()
不會改變任何東西...)
編輯:經過修改後,似乎對glGenTextures的調用實際上什麼都沒有 - 當我在顯示方法內創建一個紋理,然後從調用外調用它以後顯示,我得到相同的紋理ID在緩衝區之前 - 所以調用不會更改緩衝區內的值 - 也glGetError
返回0 ...
編輯2:Java: openGL: JOGL: What happens behind the scenes when I call the display() method?包含該問題,但沒有答案怎麼做。看到一步一步的做法可能會很有趣,如果讓代碼在某處存在一次,可能不需要修改它...