我正在使用glScalef()放大程序,现在当我使用代码将其恢复为原始大小时:

glScalef(1.0f/ZOOM, 1.0f/ZOOM, 1);

在高倍变焦下效果不佳...(也许是因为丢失了小数点?)

我如何可以将其完全还原为原始大小,而无需进行上述任何计算?

最佳答案

您可以这样做:

ZOOMSQRT = sqrt(ZOOM);
glScalef(1.0f/ZOOMSQRT, 1.0f/ZOOMSQRT, 1);
glScalef(1.0f/ZOOMSQRT, 1.0f/ZOOMSQRT, 1);

或使用glPushMatrix/glPopMatrix恢复缩放前的原始矩阵:
glPushMatrix();
glScalef(ZOOM, ZOOM, 1);
[do whatever you like here...]
glPopMatrix(); // now it's at normal scale again
[do other things here...]

关于opengl - 如何还原glScalef()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/635708/

10-09 18:16