Qt中的OpenGL不绘制红色方块



我正在尝试使用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()中没有任何内容)。

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

我的代码似乎有两个问题。首先,我必须在以下位置设置视口:

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().

相关内容

  • 没有找到相关文章

最新更新