이 모드가 무엇을하는지 이해하지 못합니다.OpenGL MatrixMode
설정되어 있습니다. glMatrixMode (GL_MODELVIEW);
꼭지점을 그리기 전에 실제로 그 의미는 무엇입니까? 뭐하는거야?
이 모드가 무엇을하는지 이해하지 못합니다.OpenGL MatrixMode
설정되어 있습니다. glMatrixMode (GL_MODELVIEW);
꼭지점을 그리기 전에 실제로 그 의미는 무엇입니까? 뭐하는거야?
OpenGL에는 두 가지 기본 매트릭스 모드가 있습니다 (다른 두 가지 모드가 있지만 걱정할 필요는 없습니다). GL_MODELVIEW
및 GL_PROJECTION
입니다. 함께 OpenGL은 당신이 가져다주는 비주얼에 넣는 정점을 어떻게 변환하는지에 대한 많은 부분을 정의합니다. glMatrixMode(GL_MODELVIEW)
을 가장 최근에 호출 한 경우 포인트가 공간에서 어떻게 이동 할지를 변경하면 모든 포인트가 glTranslatef
으로 번역되고 glRotatef
과 같이 회전 될 수 있습니다. glMatrixMode(GL_PROJECTION)
을 호출하면 점이 화면에 어떻게 투영되는지가 변경됩니다. 이것은 gluPerspective
또는 glOrtho
과 같은 것을 호출하기를 원하는 모드입니다.
각 주요 드로잉 단계 (메인 장면, GUI 등)가 프로젝션 매트릭스를 설정하기 전에 프로젝션 모드로 전환 한 다음 다음 뷰까지 모델 뷰로 전환하는 것이 일반적입니다. 이렇게하면 카메라를 움직이거나 객체의 위치를 변경하여 장면의 변형을 변경하는 동안 투영을 변경하지 않고 그대로 둘 수 있습니다.
glMatrixMode()를 호출하면 뒤 따르는 변환을위한 행렬을 설정합니다. 이들 매트릭스를 분리하여
평소 그래서 행렬 변경 후 glOrtho/glFrustum 호출하고 GL_MODELVIEW 포지셔닝 및 glRotate/glTranslate을 물체 회전 (투영 변환을 저장 GL_PROJECTION 매트릭스를 사용할 것이다.
수행 할 수 있습니다 항상 모델 뷰 행렬을 제로 다시 투영 행렬을 계산하지 않아도됩니다 - 모든 개체를 표시하는 동안 일반적으로 두 번째는 일정하게 유지됩니다
예 :.
glMatrixMode(GL_PROJECTION);
glLoadIdentity(); //now we zero only the projection matrix
glOrtho(0,width,0,height,-1,1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// now you can use glTranslate and glRotate for positioning objects
// and then call glLoadIdentity() again to return to origin, still preserving your projection
나는 또한이 주제를 완전히 다루기 때문에 The Red Book이나 opengl.org의 자습서를 볼 것입니다.
실제로 각 프레임 반복의 시작 부분에 투영을 설정하는 것이 좋습니다. . HUD, 미니 맵 또는 다른 예상을 필요로하는 다른 요소를 그리는 경우 어쨌든 그렇게 할 것입니다. – datenwolf
물론입니다. 내 설명은 단순한 단일 장면, 프릴이 붙어 있지 않은 프로그램을 가정하고 있었고 그에 따라 내 대답을 조정할 것입니다. – nonVirtualThunk