2014-06-13 13 views
1

우분투에서 Qt5가있는 프로젝트에서 QGLWidget을 사용하고 있습니다.우분투의 QGLWidget에 아무것도 표시되지 않습니다.

헤더 : QGLWidget를 확장하는 클래스는 두 개의 가상 보호 기능을 overiding 매우 간단

class MyGLWidget : public QGLWidget { 
    Q_OBJECT 
public: 
    explicit MyGLWidget(QWidget *parent = 0); 
protected: 
    void initializeGL(); 
    void paintGL(); 
}; 

구현 : 나는 그것의 인스턴스를 생성하고 표시 방법이라고

MyGLWidget::MyGLWidget(QWidget *parent) : 
    QGLWidget(parent) { 
} 
void MyGLWidget::initializeGL() { 
    glClearColor(1.0f, 0.0f, 0.0f, 1.0f); 
} 
void MyGLWidget::paintGL() { 
    glClear(GL_COLOR_BUFFER_BIT); 
} 

빨간색 창이 나타나기를 기대하지만, 내가 얻은 것은 :

enter image description here

창이 투명하고 아래에 무엇이든 표시합니다.

실제로 문제는 무엇이며 어떻게 해결할 수 있습니까? (우분투 14.04 64 비트를 사용하고 있습니다. Qt5.3은 qt-project.org에서 직접 설치됩니다.)

+0

'resizeGL'에서'glViewport'를 호출 해 볼 수 있습니까? – pezcode

+0

합성 창 관리자에서 단일 버퍼 렌더링을 시도하는 것처럼 보이는 것 같습니다. 더블 버퍼링 된 픽셀 포맷을 할당 했습니까? 그리고 버퍼를 바꿔 치기를하고 있습니까? 이 두 가지를 모두하지 않으면이 문제가 발생할 것입니다. –

답변

0

동일한 버전의 Ubuntu 및 Qt 5.4에서 같은 문제가 발견되었습니다. 나는 정확한 이유를 모르지만 다른 명령을 따르지 않는 한 glClear 명령이 그래픽 카드에 수신되거나 실행되지 않아서라고 생각합니다. 나는이 같은 일부 고전 테스트 코드를 포함 할 paintGL 기능을 확장 : 빨간색 삼각형을 렌더링하기 위해 추가 코드와

void MyGLWidget::paintGL() 
{ 
    glViewport(0, 0, width(), height()); 
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f); 
    glClear(GL_COLOR_BUFFER_BIT); 

    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glOrtho(-20, 20, 20, -20, -1, 1); 

    glColor3f(1.0f, 0.0f, 0.0f); 
    glBegin(GL_TRIANGLES); 
    glVertex3f(10, 10, 0); 
    glVertex3f(-10, 10, 0); 
    glVertex3f(0, -10, 0); 
    glEnd(); 
} 

을, 나는 분명히이 이전되지했을 때 나를 위해 작동하기 시작 것을 발견했다.