我有這行代碼:Java:openGL:JOGL:當我調用display()方法時,幕後會發生什麼?
renderableObject.renderObject(gl, glu);
這導致通過openGL的被渲染對象的大名單,但是它只能使用時如下:
@Override
public void display(GLAutoDrawable drawable)
{
renderableObject.renderObject(gl, glu);
}
如果我所說的行重寫的顯示方法以外,我得到一個異常說有在當前線程上沒有glContext,其實如果我叫任何GL得出這樣的方法我得到相同的異常之外的命令
現在最好我想創造了很多顯示列表一次,然後渲染他們的每一幀奇數顯示列表定期重新創建。但是我必須通過這個單一的display()方法,這意味着如果顯示列表已經創建或者需要更改等,我將不得不測試每一幀。每秒60次!當我需要時可以單獨處理它們時,多少浪費處理能力。
因此,無論調用display()方法,我都希望能夠複製它,使我可以創建大量我自己的自定義顯示方法,而無需通過這一種方法處理所有事情!
那麼是否有一個簡單的電話我可以讓自己?
幕後JOGL正在做一堆工作。它正在創建一個GLContext,並使其成爲當前線程的GLCanvas。 -------我不能自己做這個嗎? – Troyseph
塞巴斯蒂安特洛伊,你可以但它做什麼並不是微不足道的。您可以執行嚴格的最小操作(從GLAutoDrawable獲取GLContext並使其成爲最新版本),但請記住,JOGL包含許多不錯的怪癖和解決方法,這些操作比C中的本地純OpenGL或Java中的其他綁定更安全, C#,Python,...而且,如果你做了不好的事情,那麼破壞你的性能真的很容易。當我將Ardor3D移植到JOGL 2時,我發現makeCurrent()被無用地調用了一次,當v-sync關閉時,刪除這個調用給了我一個巨大的提升。 – gouessej