各种OpenGL功能的相对成本?

时间:2011-07-11 02:22:02

标签: opengl 3d

我正在尝试优化一些OpenGL代码,我想知道是否有人知道一个表格可以粗略估计各种OpenGL函数的相对成本? 像(这些数字可能完全错误):

method                        cost
glDrawElements(100 indices)    1
glBindTexture(512x512)         2
glGenBuffers(1 buffer)         1.2

如果不存在,是否可以构建一个或者各种硬件/操作系统有太大的不同甚至没有意义?

2 个答案:

答案 0 :(得分:3)

不同OpenGL函数的相对成本在很大程度上取决于函数的参数,调用它们时的活动OpenGL环境以及运行的GPU,驱动程序和操作系统。没有什么好的方法可以像你所描述的那样进行比较 - 你最好的选择就是测试不同的可能性,看看哪种方式最适合你。

答案 1 :(得分:3)

肯定没有这样的清单。创建这样一个列表的一个问题是回答“什么样的成本?”这个问题。

所有渲染功能都具有GPU时间成本。也就是说,GPU必须进行渲染。多少费用取决于使用的着色器,提供的顶点数量以及使用的纹理。

即使是CPU时间成本,值也不清楚。拿glDrawElements。如果在调用之前更改了顶点属性绑定,则可能需要比未使用时更多的CPU时间。同样,如果自上次使用以来在程序中更改了统一值,则使用该程序进行渲染可能需要更长时间。等等。

组装这样一个列表的主要问题是它鼓励过早优化。如果您有这样的列表,那么将鼓励用户采取措施避免使用成本更高的功能。沿着这条路线他们可能会采取太多步骤。不,最好完全避免这个问题,并鼓励用户在优化它们之前实际profile他们的应用程序。