Qt中的OpenGL不会绘制红色方块

时间:2012-06-11 20:29:28

标签: c++ qt opengl glulookat

我正在尝试使用QGLWidget在Qt应用程序中使用OpenGL。

我创建了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 个答案:

答案 0 :(得分:2)

我认为您需要设置OpenGL视口。 SDK中有一些Qt + OpenGL示例。看看吧!

答案 1 :(得分:1)

我的代码似乎有两个问题。首先,我必须在:

中设置视口
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()