Qt/OpenGL小部件中的显示损坏 我目前正在开发一个玛雅C++插件,希望使用Qt(QGLWIDGET)显示一个OpenGL窗口,它有2个简单的形状。但是,显示很奇怪:

Qt/OpenGL小部件中的显示损坏 我目前正在开发一个玛雅C++插件,希望使用Qt(QGLWIDGET)显示一个OpenGL窗口,它有2个简单的形状。但是,显示很奇怪: ,c++,qt,opengl,maya,C++,Qt,Opengl,Maya,代码如下: #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

代码如下:

#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();
}
#包括
#包括
类GLWidget:publicqglwidget
{
公众:
GLWidget(QWidget*parent=0);
虚拟~GLWidget(){};
受保护的:
虚空初始化egl();
虚拟空隙大小(整型宽度、整型高度);
虚空paintGL();
};
GLWidget::GLWidget(QWidget*父项):QGLWidget(父项)
{
}
void GLWidget::initializeGL(){
glShadeModel(GL_平滑);
glClearColor(0.0f、0.0f、0.0f、0.0f);
glClearDepth(1.0f);
glEnable(GLU深度试验);
glDepthFunc(GL_LEQUAL);
glHint(GL\u透视图\u校正\u提示,GL\u最佳);
}
void GLWidget::resizeGL(int w,int h)
{
glViewport(0,0,w,h);
glMatrixMode(GL_投影);
glLoadIdentity();
glMatrixMode(GLU模型视图);
glLoadIdentity();
updateGL();
}
void GLWidget::paintGL()
{
glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位);
glLoadIdentity();
GLTRANSTEF(-1.5f,0.0f,-6.0f);
glBegin(GL_三角形);
glVertex3f(0.0f,1.0f,0.0f);
glVertex3f(-1.0f,-1.0f,0.0f);
glVertex3f(1.0f,-1.0f,0.0f);
格伦德();
GLTRANSTEF(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);
格伦德();
}

我需要做什么才能有一个正确的显示?

这个问题与QGLWidget无法添加到QGraphicscene这一事实有关。我不得不通过一个QGridLayout

QGLWidget是一个针对OpenGL的Qt小部件,所以它应该可以工作。我想知道:当插件显示其窗口时,你还能与Maya交互吗?