OpenGL에서 간단한 카메라 시스템을 구현하고 있습니다. 투영 행렬 아래에 gluPerspective를 설정하고 ModelView 행렬에 gluLookAt를 사용합니다. 이 후에 키보드 이벤트를 확인하고 회전 화살표 키가 있으면 각도 및 전진 속도를 수정하는 기본 렌더링 루프가 생깁니다 (y 축만 회전하고 z (전진)을 통해 이동). 그럼 다음 코드를 사용하여 뷰를 이동 (최종 프레임은 프레임 속도로 이동을 분리하기 위해 초 단위로 렌더링 된 이후 deltaTime 시간의 양이다) 세계 원점 주변의 OpenGL 회전 로컬 원점
//place our camera
newTime = RunTime(); //get the time since app start
deltaTime = newTime - time; //get the time since the last frame was rendered
time = newTime;
glRotatef(view.angularSpeed*deltaTime,0,1,0); //rotate
glTranslatef(0,0,view.forwardSpeed*deltaTime); //move forwards
//draw our vertices
draw();
//swap buffers
Swap_Buffers();
그런 다음 코드를 다시 주위 루프. 내 무승부 알고리즘은
glPushMatrix()
으로 시작하여
glPopMatrix()
으로 끝납니다.
glRotatef() 및 glTranslatef()를 호출 할 때마다보기가 전달 방향으로보기 방향으로 앞으로 이동합니다.
그러나 코드를 실행하면 올바른 위치에 객체가 그려 지지만 움직일 때 세계 기원 (0,0,0 - Z 축을 따라 직면)의 방향으로 이동이 이루어집니다 (내가 가리키고있는) 로컬 오리엔테이션으로 이동하고, 회전 할 때, 회전은 카메라의 위치가 아니라 (0,0,0) 정도 수행됩니다.
나는 그 자리에서 회전하는 것과는 반대로 (0,0,0) 궤도를 도는 나의 카메라의 이상한 효과로 끝납니다.
루프 안의 모든 곳에서 glLoadIdentity()
을 전혀 호출하지 않으며 매트릭스 모드가 전체 루프에 대해 GL_MODELVIEW
으로 설정되어 있다고 확신합니다. 나는 PushMatrix 및 PopMatrix 호출 사이에, 화면이 검게 간다 나는 내가 그릴 개체를 찾을 수없는 모양에 상관없이.
draw(
) 함수 내부
glLoadIdentity()
통화를 보류하는 경우
또 다른 이상한 효과는
는 누구? 대신에 그 자리에서 회전 나는이 궤도 (0, 0, 0)를 만들기 위해 엉망이 한 일을 알고
에 넣어주세요 코드라고 생각합니다! – DaMacc