我在哪里可以看到按执行成本排序的opengl命令列表,例如glBindXXX。
例如,该列表必须提供问题的答案: 更多成本:更改纹理还是着色器? 更多成本:更改着色器还是顶点缓冲区? 等
答案 0 :(得分:3)
就像@datenwolf所写的那样,它高度依赖于实现/硬件,但这里有一个2014年演示文稿的链接,其中有一个按降序排列的相对成本表(第48页): http://www.slideshare.net/CassEveritt/beyond-porting
渲染目标&gt;节目&gt; ROP&gt;纹理绑定&gt;顶点格式&gt; UBO&gt; <顶点绑定>统一更新
答案 1 :(得分:2)
我在哪里可以看到按执行成本排序的opengl命令列表,例如glBindXXX。
无处,因为这样的列表不存在。 OpenGL只是一个规范,与其他实现相比,每个实现的行为都可能完全不同。
状态变化的成本完全取决于实际的实施。话虽如此,有一些经验法则:
冷却缓存的操作是最昂贵的操作。因此,切换纹理(然后将其用于实际绘图)非常昂贵;只是绑定一个不同的纹理和绑定另一个纹理,但没有与纹理做任何事情,但可能是便宜或不。
请注意,一些OpenGL实现(特别是专有的AMD和NVidia实现)甚至可以收集调用它们的流程的统计信息和运行时配置文件,以应用启发式方法来优化运行时行为。