你怎么知道每帧需要调用哪些OpenGL函数,哪些只能调用一次?

时间:2009-07-22 20:08:35

标签: opengl

正如问题所述。我现在拥有的最好的例子是函数glSelectBuffer。我想知道我是否可以在我的初始化函数中调用它一次,或者在我执行glRenderMode(GL_SELECT)之前每次都要调用它。但总的来说,有很多次我想知道我是否可以在程序开始时调用一次函数,或者我是否必须每帧都调用它。

我知道OpenGL是一个状态引擎,但在我看来,有些东西保留在状态而其他东西则没有。是的,我知道,当我在程序中稍后修改某些内容时,由于OpenGL是一个状态引擎,我每次都必须将它重置回循环开头的第一个值。这不是我正在寻找的答案。

如果没有别的,如果你发现我很困惑并且你没有遇到这样的问题,那么请回答我的子问题:glSelectBuffer是否可以被调用一次还是需要每次调用。

1 个答案:

答案 0 :(得分:2)

每次都应该只调用直接渲染调用。 (glClear,glBegin - glVertex - glEnd,e.t.c。) 有时需要在每个帧中调用状态修改调用,因为您希望在帧渲染过程中的不同点将它们设置为不同的状态。

glRenderMode也是如此 - 您希望在GL_SELECT和其他模式之间不断切换。

编辑:对不起,这似乎也是glSelectBuffer的情况 - 根据手册页退出GL_SELECT模式会自动重置缓冲区指针。