glXCreateContext - створення нового контексту малювання GLX.

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

GLXContext glXCreateContext (Display * dpy,
                             XVisualInfo * vis,
                             GLXContext shareList,
                             Bool direct) ;

 

Параметри

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

vis вказує візуальну частину, яка визначає ресурси буфера кадру, доступні для контексту малювання. Параметр являє собою структуру XVisualInfo, а не ідентифікатор або вказівник на Visual.

shareList вказує контекс з яким необхідно розподіляти списки відтворення. Значення NULL вказує, що розподілення непотрібне.

direct вказує чи малювання потрібно виконувати за допомогою безпосереднього підключення до графічної системи, якщо це можливо (значення True), або через сервер X (False).

Опис

Функція glxCreateContext створює контекст малювання GLX і повертає його структури управління. Даний контекст може використовуватися для малювання у віконні або GLX-буфери. Якщо функція glXCreateContext не спроможна створити контекст відмальовування, повертається вказівник NULL.

Якщо параметр direct містить значення True, тоді створюється безпосередній контекст, якщо реалізація підтримує безпосереднє малювання, сервер X розміщується локально, і якщо доступний безпосередній контекст малювання (реалізація може повертнути опосередкований контекст, якщо параметр direct містить значення True). Якщо параметр direct містить значення False, тоді завжди створюється контекст малювання, який малює за допомогою сервера X. У деяких реалізаціях безпосереднє малювання забезпечує перевагу у ефективності. Однак, безпосередній контекст малювання не може бути розподіленим між процесами і вони можуть не мати змоги малювати у GLX буфери.

Якщо shareList не містить значення NULL, тоді усі індекси списків відтворення і визначення розподіляються за допомогою контексту shareList і новоствореного контексту. Довільна кількість контекстів може розподіляти один простір списків відтворення. Однак, усі контексти малювання, які розподіляють один простір списків відтворення повинні самі по собі існувати у одному адресному просторі. Два контекста малювання розподіляють один простір адрес, якщо вони опосередковано містяться на одному сервері, або безпосередньо розміщені у одному процесі. Зверніть увагу, що за умови опосердкованого розміщення на одному сервері, не вимагається щоб потоки розподіляли один адресний простір, тільки щоб їхні пов'язані контексти малювання розділяли адресний простір.

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

Нотатки

Функція XVisualInfo визначається у Xutil.h. Це структура, яка включає елементи visual, visualID, screen і depth.

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

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

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

Помилки

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

Генерується BadMatch, якщо контекст, який необхідно створити не буде розподіляти адресний простір, або екран контексту, вказаного у параметрі shareList.

Гунерується BadValue, якщо параметр vis не являється коректною візуальною компонентою (наприклад, якщо певна реалізація GLX не підтримує її).

Генерується GLXBadContext якщо параметр shareList не являється коректним контекстом GLX і не містить NULL.

Генерується BadAlloc, якщо сервер не має достатньо ресурсів для розміщення нового контексту.

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

glXDestroyContext, glXGetConfig, glXIsDirect, glXMakeCurrent

Оригінал

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