glXGetConfig - повертає інформацію про візуальні компоненти GLX.

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

int glXGetConfig (Display * dpy,
                  XVisualInfo * vis,
                  int attrib,
                  int * value) ;

 

Параметри

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

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

attrib вказує візуальний атрибут, який необхідно повернути.

value повертає опитуване значення.

Опис

Функція glXGetConfig встановлює значення value до параметра attrib вікна або GLX буфера (карта пікселів), яке було створене з параметрами вказаними у vis. Якщо функція glXGetConfig завершує виконання невдало - вона повертає код помилки. В іншому випадку, повертається значення 0.

Параметр attrib може містити один з наступних значень:

  • GLX_USE_GL. Повертає значення True, якщо даний візуальний компонент підтримує малювання за допомогою OpenGL, False у іншому випадку.
  • GLX_BUFFER_SIZE. Кількість бітів на колірний буфер. Для візуальних компонентів RGBA, GLX_BUFFER_SIZE являється сумою GLX_RED_SIZE, GLX_GREEN_SIZE, GLX_BLUE_SIZE і GLX_ALPHA_SIZE. Для колір-індексних візуальних компонентів, GLX_BUFFER_SIZE являється розміром колірних індексів.
  • GLX_LEVEL. Рівень буфера кадру для візуального компоненту. Рівень нуль являється буфером кадру по замовчуванню. Можливі рівні відповідають буферам кадру, які перекривають буфер за умовчанням, і негативні рівні відповідають буферам кадру, які лежать нижче буфера кадру.
  • GLX_RGBA. Повертається значення True, якщо буфери зберігають значення червого, зеленого, синього і компонента прозорості. False, якщо вони зберігають індекси кольорів.
  • GLX_DOUBLEBUFFER. Повертається значення True, якщо колірні буфери існують у парах передній/задній, які можуть взаємозамінятися, False в іншому випадку.
  • GLX_STEREO. Повертається значення True, якщо колірні буфери існують у парах лівий/правий, значення False у іншому випадку.
  • GLX_AUX_BUFFERS. Повертається кількість допоміжних колірних буферів, які є доступними. Нуль вказує, що існує жоден допоміжний колірний буфер.
  • GLX_RED_SIZE. Кількість бітів червоного, які зберігаються у кожному колірному буферу. Невизначене, якщо параметр GLX_RGBA містить False.
  • GLX_GREEN_SIZE. Кількість бітів зеленого компоненту кольору, які зберігаються у кожному колірному буферу. Невизначене, якщо параметр GLX_RGBA встановлено у False.
  • GLX_BLUE_SIZE. Кількість бітів синього компоненту кольору, які зберігаються у кожному колірному буфері. Невизначене, якщо параметр GLX_RGBA містить False.
  • GLX_ALPHA_SIZE. Кількість бітів компоненту прозорості кольору, які зберігає кожен колірний буфер. Невизначено, якщо GLX_RGBA містить False.
  • GLX_DEPTH_SIZE. Кількість бітів у буфері глибини.
  • GLX_STENCIL_SIZE. Кілкість бітів у буфері трафарету.
  • GLX_ACCUM_RED_SIZE. Кількість бітів червоного компоненту кольору, які зберігаються у буфері накопичення.
  • GLX_ACCUM_GREEN_SIZE. Кількість бітів зеленого кольору, які зберігаються у буфері накопичення.
  • GLX_ACCUM_BLUE_SIZE. Кількість бітів синього компоненту кольору, які зберігаються у буфері накопичення.
  • GLX_ACCUM_ALPHA_SIZE. Кількість бітів компоненту прозорості, які зберігаються у буфері накопичення.

Протокол віконної системи X дозволяє створення одиного ідентифікатора візуального компоненту, який має різну кількість бітів на піксель. Вікна або буфери GLX, які будуть створювати зображення за допомогою OpenGL, однак, повинні створюватися з розміром у параметрі GLX_BUFFER_SIZE для буферу глибини.

Хоча реалізація GLX може експортувати множину візуальних компонентів, які підтримують малювання за допомогою системи OpenGL, вона повинна підтримувати хоча-б один візуальний компонент RGBA. Цей візуальний компонент повинен мати хоча-б один колірний буфер, буфер трафарету з розміром в 1 біт, буфер глибини хоча-б у 12 бітів, і буфер накопичення. Комірки для компоненту прозорості являються необов'язковими у даному візуальному компоненті. Однак, його розмір буферу кольору повинен бути таким виликим, як підтримуваний візуальний компонент на рівні нуль для найглибших TrueColor, DirectColor, PseudoColor або StaticColor, і він самостійно повинен мати можливість бути на нульовому рівні.

У додаток, якщо X-сервер підтримує режими PseudoColor або StaticColor на рівні буфера кадру 0, індекс візуального компоненту також вимагається на даному рівні. Він повинен мати хоча-б один колірний буфер, буфер трафарету хоча-б з 1 бітом, і буфер глибини хоча-б з 12 бітами. Даний візуальний компонент повинен мати стільки колірних бітових комірок, скільки найглибший з режимів PseudoColor або StaticColor підтримуваного візуального комопоненту на рівні 0.

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

Нотатки

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

Помилки

GLX_NO_EXTENSION генерується якщо параметр dpy не підтримує розширення GLX.

GLX_BAD_SCREEN генерується, якщо екран вказаний у візуальному копоненті vis відповідає жодному екрану.

GLX_BAD_ATTRIBUTE генерується, якщо attrib не являється коректним атрибутом GLX.

GLX_BAD_VISUAL генерується, якщо vis не підтримує GLX і вимагається атрибут відмінний від GLX_USE_GL.

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

glXChooseVisual, glXCreateContext

Оригінал

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