Opengl glScalef重置性能

时间:2012-05-11 16:41:24

标签: performance opengl

glScalef(0.5f, 0.5f, 0);
// do some things
glScalef(2.0f, 2.0f, 0);

或..

glPushMatrix();
glScalef(0.5f, 0.5f, 0);
// do some things
glPopMatrix();

哪个更好,性能更好?

1 个答案:

答案 0 :(得分:5)

第二个。因为第一个计算并乘以4x4矩阵,而第二个只写和读它。请注意,OpenGL可以智能化,只能创建/乘以对角矩阵。然而,您正在比较3个浮点乘法与16个变量存储。如果您担心性能上的差异,则需要编写测试。

精确度,第二个肯定更好,因为由于任何舍入误差0.5 * x * 2可能给出与x不同的值。这就是为什么,即使另一种方法稍微快一点,这种方法也是首选。