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这一事实有关。我不得不通过一个QGridLayoutQGLWidget是一个针对OpenGL的Qt小部件,所以它应该可以工作。我想知道:当插件显示其窗口时,你还能与Maya交互吗?