문제
내 프로그램에서 확대하기 위해 glscalef ()를 사용하는 im 이제 코드를 사용하여 원래 크기로 되돌아 갈 때 다음과 같습니다.
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...]
다른 팁
프로젝션 매트릭스를 간단히 저장할 수 있습니다. glpushmatrix (), glscalef (), ..., glpopmatrix ()
첫 번째 glscalef () 전에 glpushmatrix ()를 사용하여 현재 모델 매트릭스를 스택으로 밀고 원래 스케일을 되 찾으려면 glpopmatrix ()를 사용하면 계산이 없으므로 반올림 오류가 없습니다. 끝 나가고있다.
이전 크기를 어딘가에 보관하고 스택에 말하고 사용하십시오.
(전환을 이전 확대 / 줌으로 다시 애니메이션하는 팬 및 회전 설정은 확대 / 축소보다는 매우 재미 있습니다)
제휴하지 않습니다 StackOverflow