2011-11-30 90 views
1

我想設置一個圖片樣式「地圖」顯示一個圖形程序,顯示一輛車。 (只是在較小的視圖端口再次顯示頂部的視圖。)但是,第二個視口似乎閃爍。我以爲我正確地做了這件事,但我可能沒有正確地概念化。畫中畫在OpenGL導致閃爍

void display(void) { 


    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT); 


    // Set Perspective 

    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    gluPerspective(fov, aspect, near, far); 
    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 
    glViewport(0, 0, 500, 500); 
    // Lighting follows Camera if inserted here. 


    //Set Camera 
    calculateCamera(); 
    gluLookAt(eyeX + carPosX, eyeY + carPosY, eyeZ + carPosZ, cX + carPosX, 
       cY + carPosY, cZ + carPosZ, 0, 1, 0); 


    displayEnvironment(); 


    glClear(GL_DEPTH_BUFFER_BIT); 

    // Set Perspective 

    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    gluPerspective(fov, aspect, near, far); 
    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 
    glViewport(0,0,150,150); 

    gluLookAt(0, 140, 0,0, 0, 0, 1, 0, 0); 

    displayEnvironment(); 

    } 
+0

難道是因爲我在displayEnvironment中啓用燈光嗎? – jaiesh

+1

它是什麼樣的閃爍? PIP本身是否閃爍(有時它會在後端的其餘部分上繪製,有時不會)?或者PIP內部的圖像以某種方式閃爍?如果您發佈了兩種不同「閃爍」狀態的截圖(假設只有兩種狀態),我認爲這會很有幫助。 –

+0

雙緩衝區,並確保displayEnvironment本身不清除東西? – 2011-11-30 03:23:19

回答

4

你在哪裏/什麼時候交換緩衝區?也許你不等待渲染完成?

+0

謝謝。 glutSwapBuffers在displayEnvironment中被調用。這是導致閃爍。在調用第二個displayEnvironment後,將glutSwapBuffer移動下來。 – jaiesh