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