重复调用OpenGL函数

7
我想知道是否建议消除所有冗余的OpenGL调用。
例如,我应该像这样做(包装在一个函数中):
if(foobuffer != boundbuffer) {
  glBindBuffer(GL_BAR_BUFFER, foobuffer);
  boundbuffer = foobuffer;
}

还是说驱动程序会自动执行这些操作,这实际上是一个多余的冗余检查吗?
2个回答

5
你应该尽量避免这种情况。在这里(具体是22.040,需要滚动页面因为没有锚点),指出即使有些实现试图最小化影响,冗余调用通常是不好的做法。
如果你不确定在代码库中可能进行了多少次冗余调用,也可以使用gDEBugger等工具来帮助跟踪定位。

3

我刚刚消除了一个安卓应用程序中的许多这样的调用,所以我可以亲身告诉你,在该平台上(在特定的操作系统版本和硬件上),这很重要。它提高了帧率约5-10%的收益。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接