进行冗余的OpenGL调用

时间:2011-02-05 07:44:40

标签: c++ opengl driver buffer call

我想知道是否建议消除所有冗余的opengl调用。

例如,我应该做什么(包裹在一个函数中):

if(foobuffer != boundbuffer) {
  glBindBuffer(GL_BAR_BUFFER, foobuffer);
  boundbuffer = foobuffer;
}

或者是驱动程序自动执行此类操作,这实际上是冗余的reduntant-check?

2 个答案:

答案 0 :(得分:5)

你应该避免它。 Here(特别是22.040,你必须向下滚动页面,因为它没有锚点),需要注意的是,即使某些实现尝试将影响降至最低,冗余调用通常也是不好的做法。

gDEBugger之类的工具也可用于帮助追踪您可能拨打多余电话的位置,如果您处的位置不确定您在代码库中可能做了多少

答案 1 :(得分:3)

我刚刚从Android应用程序中删除了许多这样的调用,所以我可以直接告诉你它在该平台上的重要性(在特定的操作系统版本和硬件上)。它将帧速率提高了几个fps,我说利润大约为5-10%。