내 글루 와이어 큐브가 원산지에 배치되지 않은 이유는 무엇입니까?
-
12-09-2019 - |
문제
디스플레이 기능에 다음과 같은 OpenGL 코드가 있습니다.
glLoadIdentity();
gluLookAt(eyex, eyey, eyez, atx, aty, atz, upx, upy, upz);
// called as: gluLookAt(20, 5, 5, -20, 5, 5, 0, 1, 0);
axis();
glutWireCube (1.);
glFlush ();
axis()
(0,0,0)에서 (10,0,0), (0,10,0) 및 (0,10,0)의 선을, (1,0,0)에서 (1,) 라인을 그립니다. 3,0).
내 재구성 기능에는 다음이 포함되어 있습니다.
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective(45.0, (GLsizei) w / (GLsizei) h, 1.0, 100.0);
glMatrixMode (GL_MODELVIEW);
이 이미지는 프로그램을 실행 한 결과를 보여줍니다. 1.
논쟁으로 glutWireCube
:
보시다시피, 큐브는 문서가 말한 것처럼 (0,0,0)를 중심으로하지 않습니다.
큐브는 모델링 좌표 원점 (...)을 중심으로합니다. (원천)
내가 프로그램을 실행하면 5.
논쟁으로, 큐브는 더욱 대체됩니다.
왜 그게 큐브를 (0,0,0) 주위에 어떻게 배치합니까?
추가 정보
순서를 전환해도 중요하지 않습니다 axis()
그리고 glutWireCube
. 주변 axis()
~와 함께 glPushMatrix()
그리고 glPopMatrix()
그것을 고치지 않습니다.
해결책
나는 수정했다 gluPerspective
카메라에서 멀어지기 시작하고 이제 z- 버퍼링이 제대로 작동하므로 큐브가 원점 주위에 배치되어 있음이 분명합니다.
해결책
Axis가 View Matrix를 엉망으로 만들지 않습니까?
큐브 그림 후에 전화하면 어떻게됩니까?
추가 할 편집 :
사실 ... 사진을 더 가까이 보면 ~이다 원점을 중심으로합니다.
큐브의 중심은 3 축의 교차점과 정확히 일치하는 것 같습니다. 의심스러워 보이는 유일한 것은 빨간 선이 흰색 가장자리에 쓰지 않는다는 것입니다. Z- 버퍼링이 제대로 설정되어 있습니까?
다른 팁
옳을 수도 있습니다. 관점으로 인해 결정하기가 어렵다고 생각합니다 ... 그러나 조금 더 쳐다 보는 것은 아니라고 생각합니다.
그것을 신속하게 배제합니다 axis()
모델보기 행렬을 수정하지 않고 행렬 푸시/팝으로 호출을 둘러싸고 있습니다.
glPushMatrix();
axis();
glPopMatrix();
조사/확인해야 할 사항 :
- 이것이 전체 창입니까? 뷰가 한쪽 구석에있는 것이 이상해 보입니다.
- 렌더링 전에 증가하는 회전을 추가하면 도움이됩니까? 더 많은 단서를 제공함으로써 관점을 더 쉽게 결정할 수 있습니다.
- 논쟁을 변경하여 "카메라"를 이동시켜 볼 수도 있습니다.
gluLookAt()
동적으로.