我正在尝试使用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()
.