2011-04-06 2 views
1

QT로 OpenGL 위젯을 그릴 때 창 디스플레이가 다소 왜곡됩니다. 모든 작업이 완료되면 화면이 지워집니다.QT 및 OpenGL에서 이상한 동작이 발생했습니다.

Screenshot http://img508.imageshack.us/img508/9950/screenshotofd.png

#include "glwidget.h" 

// Mainwidget is a sub-class of GLWidget 

GLWidget::GLWidget(QWidget *parent) : 
    QGLWidget(parent) 
{ 
} 

void GLWidget::resizeGL(int width,int height) 
{ 
    glViewport(0, 0, width, height); 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glOrtho(0, width, height, 0, -1, 1); 
    glMatrixMode(GL_MODELVIEW); 
    glEnable(GL_BLEND); 
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
} 

GLWidget::~GLWidget() 
{ 
    ; 
} 

#include <QtGui> 
#include "mainwidget.h" 

MainWidget::MainWidget() 
{ 
    //this->showFullScreen(); 
    derp = 100; 
} 

void MainWidget::paintGL() 
{ 
    glClearColor(0, 0, 0, 0); 
    //drawTriangle(0, 0, 100, 100, derp, 0); 
    derp = rand()%500; 
} 

void MainWidget::initializeGL() 
{ 
    this->resizeGL(800, 600); 
} 

void MainWidget::drawTriangle(int x1,int y1, int x2, int y2, int x3, int y3) 
{ 
    glBegin(GL_TRIANGLES); 
    glVertex3f(x1, y1, 0.0f); 
    glVertex3f(x2, y2, 0.0f); 
    glVertex3f(x3, y3, 0.0f); 
glEnd(); 
} 

#include <QtGui> 
#include "mainwindow.h" 

MainWindow::MainWindow(QWidget *parent) : 
    QWidget(parent) 
{ 
    QGridLayout *layout = new QGridLayout; 
    QTimer *timer = new QTimer(this); 
    MainWidget *View = new MainWidget(); 
    layout->addWidget(View, 0, 0); 
    setLayout(layout); 
    connect(timer, SIGNAL(timeout()), View, SLOT(paintGL())); 
    timer->start(50); 
} 

답변

0

백엔드가 그림 버퍼로 쓰레기를 받고있는 것 같습니다. glClear를 사용하면 도움이 될 수도 있습니다.

관련 문제