【问题标题】:Making redundant OpenGL calls进行冗余的 OpenGL 调用
【发布时间】:2011-06-21 19:13:41
【问题描述】:
我想知道是否建议消除所有多余的 opengl 调用。
例如,我是否应该做类似(包装在函数中)的事情:
if(foobuffer != boundbuffer) {
glBindBuffer(GL_BAR_BUFFER, foobuffer);
boundbuffer = foobuffer;
}
或者是驱动程序自动做这些事情,这实际上是一个冗余的冗余检查?
【问题讨论】:
标签:
c++
opengl
driver
buffer
call
【解决方案1】:
你应该避免它。 Here(特别是 22.040,您必须向下滚动页面,因为它没有锚点),注意到冗余调用通常是不好的做法,即使某些实现试图最小化影响。
gDEBugger 之类的工具也可用于帮助追踪可能进行冗余调用的位置,如果您不确定自己的代码库中可能进行了多少调用。
【解决方案2】:
我刚刚从 Android 应用程序中消除了许多此类调用,因此我可以直接告诉您,它在那个平台上很重要(在那个特定的操作系统版本和硬件上)。它将帧速率提高了几 fps,我会说大约 5-10% 的利润。