glDrawBuffers - вказує список колірних буферів у які буде відбуватись малювання.

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

void glDrawBuffers (GLsizei n,
                    const GLenum *bufs) ;

 

Параметри

n вказує кількість буферів у масиві bufs.

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

Опис

Функція glDrawBuffers визначає масив буферів у які буде виконуватися запис фрагментних кольорів або фрагментні дані. Якщо активні жодні фрмагментні шейдери, операцію малювання генеруватимуть тільки один фрагментний колір на фрагмент і він уде записаний у кожен з буферів вказаних у масиві bufs. Якщо фрагментні шейдери являються активними і записують значення у змінну виводу gl_FragColor, тоді це значення буде записане у кожен з буферів вказаних у параметрі bufs. Якщо фрагментний шейдер являється активним і записує значення у одне або декілька елементів масиву виводу gl_FragData[], тоді значення елементу gl_FragData[0] буде записано у перший буфер вказаний у параметрі bufs, значення gl_FragData[1] буде записано у другий буфер вказаний у bufs, і так далі аж до gl_FragData[n-1]. Буфер малювання, який використовується для gl_FragData[n] і далі неявно встановлюються у GL_NONE.

Параметр-масив bufs може містити значення наступних символічних констант:

  • GL_NONE. Фрагментні значення для колірьору або даних не записуються у будь-який колірний буфер.
  • GL_FRONT_LEFT. Фрагментні значення для кольору або даних записуються у передній лівий колірний буфер.
  • GL_FRONT_RIGHT. Фрагментні значення кольорів або даних записуються у передній правий колірний буфер.
  • GL_BACK_LEFT. Фрагментні значення кольору або даних записуються у задній лівий колірний буфер.
  • GL_BACK_RIGHT. Фрагментні значення кольору або даних записуються у задній правий колірний буфер.
  • GL_AUXi. Фрагментні значення кольору або даних записуються у допоміжний буфер за індексом i.

За вийнятком GL_NONE, вказані символічні константи можуть з'являтися у масиві bufs тільки один раз. Максимальна кількість підтримуваних буферів для малювання залежить від реалізації і може визначатися за допомогою виклику функції glGet з аргументом GL_MAX_DRAW_BUFFERS. Кількість допоміжних буферів може опитуватися за допомогою виклику функції glGet з аргументом GL_AUX_BUFFERS.

Нотатки

Функція glDrawBuffers доступна у системі OpenGL версії 2.0 або вище.

Завжди справджується рівняння GL_AUXi = GL_AUX0 + i.

Не дозволяється використовувати символічні константи GL_FRONT_GL_BACK, GL_LEFT, GL_RIGHT і GL_FRONT_AND_BACK для масиву bufs, оскільки вони можуть посилатись на декілька буферів.

Якщо фрагментний шейдер не виконує запис у gl_FragColor або gl_FragData, значення фрагментних кольорів під час виконання шейдера невизначені. Для кожного фрагменту згенерованого у даній ситуації, різні значення можуть записуватися у кожен з буферів вказаних у масиві bufs.

Помилки

GL_INVALID_ENUM генерується якщо одне з значень у масиві bufs не містить допустимого значення.

GL_INVALID_ENUM генерується якщо параметр n містить значення менше від 0.

GL_INVALID_OPERATION генерується якщо символічні константи відмінні від GL_NONE з'являються більш ніж один раз у масиві bufs.

GL_INVALID_OPERATION генерується якщо будь-які записи масиву bufs (відмінні від GL_NONE) вказують колірний буфер, який не існує в поточному контексті OpenGL.

GL_INVALID_VALUE генерується якщо параметр n містить значення більше за GL_MAX_DRAW_BUFFERS.

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

Пов'язані параметри

glGet з аргументом GL_MAX_DRAW_BUFFERS

glGet з аргументом GL_DRAW_BUFFERSi де i вказує номер буферу малювання, значення якого опитується

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

glBlendFunc, glColorMask, glDrawBuffers, glIndexMask, glLogicOp, glReadBuffer

Оригінал

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