【问题标题】:Corrupted display in Qt/OpenGL widgetQt/OpenGL 小部件中的显示损坏
【发布时间】: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 小部件,所以它应该可以工作。

标签: c++ qt opengl maya


【解决方案1】:

问题与不能将 QGLWidget 添加到 QGraphicsScene 的事实有关。我不得不通过 QGridLayout

【讨论】:

  • 我想知道:当您的插件显示其窗口时,您还能与 Maya 交互吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-26
  • 2015-03-24
  • 1970-01-01
  • 2018-11-27
  • 1970-01-01
相关资源
最近更新 更多