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();
哪个更好,性能更好?
答案 0 :(得分:5)
第二个。因为第一个计算并乘以4x4矩阵,而第二个只写和读它。请注意,OpenGL可以智能化,只能创建/乘以对角矩阵。然而,您正在比较3个浮点乘法与16个变量存储。如果您担心性能上的差异,则需要编写测试。
精确度,第二个肯定更好,因为由于任何舍入误差0.5 * x * 2
可能给出与x
不同的值。这就是为什么,即使另一种方法稍微快一点,这种方法也是首选。