2
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();

哪个更好,性能明智?

4

1 回答 1

5

第二个。因为第一个计算并乘以一个 4x4 矩阵,而第二个只写入和读取它。请注意,OpenGL 可以对其进行智能处理,并且只创建/乘以对角矩阵。不过,您将 3 个浮点乘法与 16 个变量存储进行比较。如果您担心性能差异,则需要编写测试。

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

于 2012-05-11T16:43:26.100 回答