문제

내 프로그램에서 확대하기 위해 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 ()를 사용하면 계산이 없으므로 반올림 오류가 없습니다. 끝 나가고있다.

이전 크기를 어딘가에 보관하고 스택에 말하고 사용하십시오.

(전환을 이전 확대 / 줌으로 다시 애니메이션하는 팬 및 회전 설정은 확대 / 축소보다는 매우 재미 있습니다)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top