1 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊
實(shí)際上,這是個(gè)壞主意。您不能將 GL 實(shí)例存儲到字段中,因?yàn)樗苋菀壮鲥e(cuò),原因有以下幾個(gè):
GL 實(shí)例隨時(shí)可能失效
您可以在 OpenGL 上下文不是當(dāng)前的線程上訪問它
您可以在 OpenGL 上下文已成為當(dāng)前線程的線程上訪問它,但有時(shí)它不是當(dāng)前的(在釋放上下文之后)
這就是您應(yīng)該使用 GLEventListener 的原因。否則,您可以通過調(diào)用GLContext.getCurrentGL()獲取有效的 GL 實(shí)例,但如果沒有當(dāng)前上下文,它會拋出 GLException。您也可以使用GLAutoDrawable.invoke(),它允許在正確的時(shí)間在正確的線程上運(yùn)行您的代碼,但 GLEventListener 更有用,因?yàn)槟梢栽诔跏蓟瘯r(shí)執(zhí)行一些代碼。
順便說一下,JOGL 的具體問題應(yīng)該在官方 JogAmp 論壇上而不是在這里提問。StackOverflow 是解決一般 OpenGL 問題的好地方,但大多數(shù) JogAmp 貢獻(xiàn)者從來沒有來過這里。是的,StackOverflow 不是靈丹妙藥。
PS:如果你想了解JOGL的設(shè)計(jì)選擇,尤其是實(shí)例設(shè)計(jì),我建議你閱讀這篇文章和評論。
添加回答
舉報(bào)