2009-07-22 53 views
1

正如問題所述。我現在最好的例子是函數glSelectBuffer。我想知道是否可以在我的init函數中調用它一次,或者在每次執行glRenderMode(GL_SELECT)之前必須調用它。但總的來說,有很多次我想知道我是否可以在程序開始時調用一個函數,或者我必須每隔一幀調用它。你怎麼知道每幀需要調用哪些OpenGL函數,哪些只能調用一次?

我知道OpenGL是一個狀態引擎,但在我看來,有些東西是保存在狀態中,而另一些則不是。是的,我知道,當我在程序中稍後修改某些內容時,由於OpenGL是一個狀態引擎,因此每次都必須將其重置爲循環開始時的第一個值;這不是我正在尋找的答案。

如果沒有別的,如果你發現我很困惑,你還沒有這樣的問題,那麼請回答我的問題,glSelectBuffer是否可以調用一次或需要每次調用。

回答

2

每次只應調用直接呈現調用。 (glClear,glBegin - glVertex - glEnd,e.t.c.) 有時需要每幀都調用狀態修改調用,因爲您希望在幀渲染過程的不同點將它們設置爲不同的狀態。

這也是glRenderMode的情況 - 您想要在GL_SELECT和其他模式之間連續切換。

編輯:對不起,這似乎也是glSelectBuffer的情況 - 根據手冊頁退出GL_SELECT模式自動重置緩衝區指針。

相關問題