glXSwapBuffers - міняє місцями передній і поточний буфери кадру.

C-специфікація

void glXSwapBuffers (Display * dpy,
                     GLXDrawable drawable) ;

 

Параметри

dpy вазує підключення до X-сервера

drawable вказує мальоване, буфери якого повинні помінятись місцями.

Опис

Функція glXSwapBuffers поширює вміст поточного буферу об'єкта drawable на його передній буфер кадру. Після чого вміст заднього буферу являється невизначеним. Оновлення зазвичай виконується під час вертикального оновлення монітору, а не після виклику функції glXSwapBuffers.

Функція glXSwapBuffers виконує опосередкований виклик функції glFlush перед завершенням виконання. Наступні команди OpenGL можуть виклкатися одразу-ж після виклику функції glXSwapBuffers, але не виконуються поки не завершиться обмін вмістом.

Якщо параметр drawable не був створений з врахуванням подвійного буферу візуального компоненту, функція glXSwapBuffers не виконує дій, і не генеруються помилки.

Нотатки

Після обміну вміст поточного буферу стає невизначеним. Зверніть увагу, що це застосовується як до піксельних буферів так і до вікон.

Усі контексти виконання GLX розподіляють однакове позначення того, які буфери являються поточними, а які передніми (тобто такими, які відображаються на екрані). Одним наслідком цього являється те, коли багато клієнтів малюють до одного вікна з подвійними буферами, вони усі повинні завершити процес малювання перед тим як один з них викличе команду для обміну контекнту між буферами. Клієнти відповідальні за реалізацію цієї синхронізації. Зазвичай така поведінка досягається за допомогою виклику фукнції glFinish, після чого використовується семафор у розподіленій пам'яті для синхронізації перед обміном.

Помилки

GLXBadDrawable генерується, якщо параметр drawable не являється коректним відмальовуваним GLX.

GLXBadCurrentWindow генерується якщо параметр dpy і drawable являються відповідно дисплеєм і відмальовуваним, що є асоційовані з поточним контекстом потоку в якому виконується функція, і параметр drawable ідентифікує вікно, яке являється некоректним.

Перегляньте також

glFlush

Оригінал

https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glXSwapBuffers.xml