2014-02-23 6 views
1

OpenGL을 프로그래밍하는 데 익숙하며 Qt에 처음 익숙합니다. 튜토리얼에 따라, 내 OpenGL을 위젯에 두 개의 삼각형을 만들려면 다음 코드를 사용했습니다 :크기가 조정될 때까지 삼각형을 표시하지 않는 Qt OpenGL 위젯

mainwindow.cpp

void MainWindow::initializeGL() { 
    qDebug("initializing"); 

    GLfloat verticies[] = { 
     +0.0f, +0.0f, 
     +1.0f, +1.0f, 
     -1.0f, +1.0f, 
     -1.0f, -1.0f, 
     +1.0f, -1.0f 
    }; 

    GLuint vertexBufferID; 
    glGenBuffers(1, &vertexBufferID); 
    glBindBuffer(GL_ARRAY_BUFFER, vertexBufferID); 
    glBufferData(GL_ARRAY_BUFFER, sizeof(verticies), verticies, GL_STATIC_DRAW); 
    glEnableVertexAttribArray(0); 
    glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0); 

    GLushort indices[] = { 
     0, 1, 2, 
     0, 3, 4 
    }; 

    GLuint indexBufferID; 
    glGenBuffers(1, &indexBufferID); 
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBufferID); 
    glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW); 

    glClearColor(0, 0, 0, 1); 
} 

void MainWindow::paintGL() { 
    qDebug("painting"); 

    //glViewport(0, 0, width(), height()); 
    glClear(GL_COLOR_BUFFER_BIT); 

    //glDrawArrays(GL_TRIANGLES, 0, 6); 
    glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, 0); 
} 

이 이상한이 코드가 완벽하게 작동,하지만 내가 크기를 조정하면 나타난다이다 창 : 크기 조정하기 전에

: 크기 조정 후 Before resize

: After resize

initializingpainting 모두 크기 변경 전에 콘솔에 출력되어 호출됩니다.

크기를 조정하면 삼각형이 표시됩니다.

차이가 있다면 Mac OSX (Mavericks)를 사용하고 있습니다.

답변

0

기본적으로 PaintGL 이후에 화면을 업데이트해야 자동 스와핑이 켜져 있어야합니다. PaintGL에서 나가기 전에 swapBuffers() 콜을 할 수 있습니까?

+0

사용하는 것이 유용 할 수 있습니다;'paintGL''의 끝. 같은 행동. – carloabelli

-1

내가 선`swapBuffers()를 추가

glViewPort(0, 0, width(), height()); 
관련 문제