Рисование с помощью двойных буферов
Двойные буферы сглаживают переход между одним изображением и другим на экране. Буферы переключения обычно выполняются в конце последовательности команд рисования. По умолчанию реализация OpenGL от Майкрософт в Windows рисуется в буфере за кадром; После завершения рисования вызывается функция 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);