使用双缓冲区绘图
双缓冲区在屏幕上平滑一个图像和另一个图像之间的过渡。 交换缓冲区通常位于一系列绘图命令的末尾。 默认情况下,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);