使用双缓冲区绘图

双缓冲区在屏幕上平滑一个图像和另一个图像之间的过渡。 交换缓冲区通常位于一系列绘图命令的末尾。 默认情况下,Windows 中 OpenGL 的 Microsoft 实现将绘制到屏幕外缓冲区;绘图完成后,调用 SwapBuffers 函数将屏幕外缓冲区复制到屏幕缓冲区。 下面的代码示例准备绘制,调用绘图函数,然后将完成的图像复制到屏幕上(如果双重缓冲可用)。

void myRedraw(void) 
{ 
    // set up for drawing commands  
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    gluPerspective(45, 1.0, 0.1, 100.0); 
 
    // draw our objects  
    myDrawAllObjects(GL_FALSE); 
 
    // if we're double-buffering ...  
    if (bDoubleBuffering)  
 
        // ...draw the copied image to the screen  
        SwapBuffers(hdc); 
}

下面的代码示例获取窗口设备上下文、呈现场景、将图像复制到屏幕 (以显示呈现) ,然后释放设备上下文。

hdc = GetDC(hwnd); 
mySceneRenderingFunction(); 
SwapBuffers(hdc); 
ReleaseDC(hWnd, hdc);