저는 OpenGL 씬에서 인디케이터 - 축을 그리는 방법을 연구했습니다. 이 프로젝트는 Qt OpenGL 위젯에 중첩되어 있지만 문제는 Qt와 별개라고 생각합니다.모서리에있는 OpenGL 드로잉 축
저는 몇 년 전부터 뷰포트와 데이터를 저장하고, botttom 코너에 새로운 것을로드하고, 회전을 적용하고, 그 다음 매트릭스를 복원 할 것을 제안했습니다. 이것은 나에게는 가장 유익한 것 같지만, OpenGL 지식에 대한 중요한 정보가 아직 누락되었다고 생각합니다. 단지를
void GLWidget::drawAxis()
{
float tempPro[16];
float tempMod[16];
glGetFloatv(GL_PROJECTION_MATRIX, &tempPro[0]);
glGetFloatv(GL_MODELVIEW_MATRIX, &tempMod[0]);
glViewport(0, 0, 50, 50);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f, 1.0f, 0.1f, 20.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPushMatrix();
glBegin(GL_LINES);
glColor3f(1.0f, 0.0f, 0.0f);
glEnable(GL_LINE_SMOOTH);
glLineWidth(1.5);
glVertex3f(-1000, 0, 0);
glVertex3f(1000, 0, 0);
glEnd();
glPopMatrix();
glViewport(0, 0, 960, 600);
glMatrixMode(GL_PROJECTION);
glLoadMatrixf(tempPro);
gluPerspective(45.0f, (960.0/600.0), 0.1f, 400.0f);
glMatrixMode(GL_MODELVIEW);
glLoadMatrixf(tempMod);
}
가 대신 내가 할 아무것도 : 지금은
나는 그냥 X에 -x에서 빨간 선 그리기, 그래서 바닥에 빨간색 사각형이 예상은 화면 왼쪽 큰 빈 장면, 그리고 어떻게 진행해야할지 확신이 서지 않습니다. 내 paintGL는 본질적으로 :
void GLWidget::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
Camera.Render();
glTranslatef(0.0, 0.0, 0.0);
glBegin(GL_QUADS);
glColor3f(1.0f, 1.0f, 1.0f);
glVertex3f(50.0f, 0.0f, 50.0f);
glVertex3f(50.0f, 0.0f, -50.0f);
glVertex3f(-50.0f, 0.0f, -50.0f);
glVertex3f(-50.0f, 0.0f, 50.0f);
glEnd();
drawAxis();
}
그것으로, 나는 큰 빈 장면을 얻을 추첨 축 기능은 여전히 나에게 내 비행기를 제공 호출하지 않습니다. drawAxis를 구현하는 방법에 뭔가 빠졌는가? 그 기능을 위해 다른 카메라를 설치해야합니까?
시도가 라인을 그리기 전에 GL_DEPTH_TEST''와 glDisable''에 대한 호출을 추가. – didierc
함수에서 뷰포트 섹션을 제거하면 일반 장면에서 빨간색 선이 표시되므로 도움이 될지 확실하지 않습니다. 아직 사용하지 않으려 고 시도했습니다. – Poken1151
섹션을 말할 때'glViewport'에서'glBegin'까지를 의미합니까? – didierc