OpenGL в Qt не рисует красный квадрат
Я пытаюсь использовать QGLWidget
использовать OpenGL в приложении Qt.
Я сделал подкласс QGLWidget
и т.д., и думал, что я проверю, работает ли это.
Однако следующий код не работает так, как я ожидал:
void MyGLWidget::paintGL() {
gluLookAt(0,0,-10,0.5,0.5,0,0,1,0);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1,0,0);
glBegin(GL_POLYGON);
glVertex3f(0,0,0);
glVertex3f(0,1,0);
glVertex3f(1,1,0);
glVertex3f(1,0,0);
glEnd();
}
То, что я предполагал, что это будет делать, это посмотреть на центр красного квадрата. Но вместо этого, когда я запускаю его, кажется, что он очень кратко смотрит на центр квадрата, а затем дисплей просто становится черным.
Я что-то не так делаю? Я не делаю никаких OpenGL где-либо еще. Вышеприведенная функция является единственным кодом OpenGL в подклассе (на данный момент в ::resizeGL()
а также ::initializeGL()
).
2 ответа
Кажется, с моим кодом было две проблемы. Сначала я должен был настроить порт просмотра в:
void MyGLWidget::resizeGL(int w, int h) {
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.,((GLfloat)w)/((GLfloat)h),0.1f,1000.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
а во-вторых, мне пришлось позвонить glLoadIdentity()
перед звонком gluLookAt()
в paintGL()
,
Я думаю, что вам нужно настроить окно просмотра OpenGL. В SDK есть несколько примеров Qt+OpenGL. Взглянуть!