2011-02-05 102 views
6

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

举例来说,我应该做这样的事情(包装在一个函数):

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

或者是驱动程序会自动做这样的事情,这实际上是一个多余的reduntant检查?

回答

5

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

gDEBugger这样的工具可以用来帮助追踪你可能在哪里进行多余的呼叫,如果你的位置不确定你在代码库中可能会做多少。

3

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