glXMakeCurrent - приєднує контекст GLX до вікна або буфера GLX.

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

Bool glXMakeCurrent (Display * dpy,
                     GLXDrawable drawable,
                     GLXContext ctx) ;

 

Параметри

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

drawable вказує GLX-відмальовуване. Повинен містити ідентифікатор X-вікна або ідентифікатор буферу GLX.

ctx вказує GLX-контекст малювання, який повинен під'єднюватися до drawable.

Опис

Функція glXMakeCurrent виконує дві дії: вона робить контекст переданий у параметрі ctx поточним контекстом малювання GLX потоку, заміняючи попередній поточний контекст, якщо такий існував, і приєднує контекст вказаний у ctx до GLX-відмальовуваного, або вікна чи буферу GLX. У якості результату цих двох дій, наступні виклики малювання GLX використовують контекст ctx для модифікування GLX-відмальовуваного вказаного у drawable (для читання і писання). Через те, що функція glXMakeCurrent завжди заміняє поточний контекст малювання на вказаний у ctx, може існувати тільки один контекст на потік.

Якщо присутні команди, які чекають виконання на попередньому контексті, виконуються перед тим, які він звільняється.

Першого разу, як контекст вказаний у ctx встановлюється у якості поточного до будь-якого потоку, його зона огляду встановлюється у повний розмір елемента drawable. Слідуючі виклики будь-якого потоку до функції glXMakeCurrent з переданим параметром ctx вносять жодні зміни на його порт огляду.

Для вивільнення поточного контексту без прив'язки нового, використовується функція glXMakeCurrent з параметром drawable встановленим у значення None і ctx встановленим у значення NULL.

Функція glXMakeCurrent повертає значення True при успішному виконаннs, і значення False у іншому випадку. Якщо повертається значення False, попередній поточний контекст малювання і відмальовуване (якщо таке присутнє) залишаються без змін.

Нотатки

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

Потік являє собою один або множину підпроцесів, які розподіляють один адресний простір, але утримують окремі програмні лічильники, простори стеку, і інші відповідні глобальні дані. Потік, який являється єдиним учасником його групи підпроцесів еквівалентний процесу.

Помилки

Помилка BadMatch генерується, якщо drawable не був створений з ідентичним X-екраном і візуальною компонентою, що і ctx. Він також генерується, якщо параметр drawable містить значення None і ctx не містить NULL.

Помилка BadAccess генерується якщо ctx являвся поточним до іншого потоку під час виклику фукції glXMakeCurrent.

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

Помилка GLXBadContextState генерується, якщо функція glXMakeCurrent викликається між відповідними викликами функцій glBegin і glEnd.

Помилка GLXBadContextState також генерується якщо поточний контекст малювання потоку, який викликає функцію має стан малювання системи OpenGL GLX_FEEDBACK або GLX_SELECT.

Помилка GLXBadCurrentWindow генерується, якщо присутні незавершені команди OpenGL для попереднього контексту і поточне відмальовуване являється вікном, що є некоректним.

Помилка BadAlloc може генеруватися, якщо сервер відтермінував створення допоміжних буферів під час виклику glXMakeCurrent, щоб визначити, що вона має недостатньо ресурсів для завершення займання пам'яті.

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

glXCreateContext, glXCreateGLXPixmap glXGetCurrentContext, glXGetCurrentDisplay, glXGetCurrentDrawable, glXGetCurrentReadDrawable, glXMakeContextCurrent

Оригінал

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