我使用glScalef()来缩放我的程序,现在当我用代码将其恢复为原始大小时:
glScalef(1.0f/ZOOM, 1.0f/ZOOM, 1);
Run Code Online (Sandbox Code Playgroud)
它在高变焦时不能很好地工作......(可能是因为丢失的小数?)
如何在没有上述任何计算的情况下将其完美地恢复到原始尺寸?
你可以这样做:
ZOOMSQRT = sqrt(ZOOM);
glScalef(1.0f/ZOOMSQRT, 1.0f/ZOOMSQRT, 1);
glScalef(1.0f/ZOOMSQRT, 1.0f/ZOOMSQRT, 1);
Run Code Online (Sandbox Code Playgroud)
或者使用glPushMatrix/glPopMatrix在缩放前恢复原始矩阵:
glPushMatrix();
glScalef(ZOOM, ZOOM, 1);
[do whatever you like here...]
glPopMatrix(); // now it's at normal scale again
[do other things here...]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4997 次 |
| 最近记录: |