【发布时间】:2016-01-03 20:58:10
【问题描述】:
我目前正在开发一个 Maya c++ 插件,并希望使用具有 2 个简单形状的 Qt (QGLWidget) 显示一个 OpenGL 窗口。但是显示很奇怪:
代码如下:
#include <stdio.h>
#include <QGLWidget>
class GLWidget :public QGLWidget
{
public:
GLWidget(QWidget *parent = 0);
virtual ~GLWidget(){};
protected:
virtual void initializeGL();
virtual void resizeGL( int width, int height );
virtual void paintGL();
};
GLWidget::GLWidget(QWidget *parent) : QGLWidget(parent)
{
}
void GLWidget::initializeGL() {
glShadeModel(GL_SMOOTH);
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
}
void GLWidget::resizeGL(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
updateGL();
}
void GLWidget::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(-1.5f, 0.0f, -6.0f);
glBegin(GL_TRIANGLES);
glVertex3f(0.0f, 1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 0.0f);
glVertex3f(1.0f, -1.0f, 0.0f);
glEnd();
glTranslatef(3.0f, 0.0f, -6.0f);
glBegin(GL_QUADS);
glVertex3f(-1.0f, 1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 0.0f);
glVertex3f(1.0f, -1.0f, 0.0f);
glVertex3d(1.0f, 1.0f, 0.0f);
glEnd();
}
我需要做些什么才能获得正确的显示效果?
【问题讨论】:
-
QGLWidget 是一个针对 OpenGL 的 Qt 小部件,所以它应该可以工作。