glAccum - оперування над буферами накопичення.
C-специфікація
void glAccum (GLenum op, GLfloat value) ;
Параметри
op вказує операцію буферу накопичення. Приймаються наступні символічні константи GL_ACCUM, GL_LOAD, GL_ADD, GL_MULT і GL_RETURN.
value вказує дійсне значення, яке використовується у буфері накомпичення. Параметр op визначає те, як дане значення використовується.
Опис
Буфер накопичення являється розширеним колірним буфером. Зображення не малюються у нього. Скоріш, зображення малюють у один з колірних буферів додаються до вмісту буферу накопичення після малювання. Ефекти на подобі згладжування (точок, ліній і багатокутників), замилення об'єктів у русі, і глибина поля можуть бути створеними за допомогою накопичення зображень, згенерованих з різними матрицями перетворень.
Кожен піксель у буфері накопичення складається з значент червоного, зеленого, синього і компоненту прозорості. Кількість бітів на компонент у буфері накопичення залежить від реалізації. Ви можете перевіряти це число за допомогою чотирикратного виклику фукнції glGetIntegerv, з аргументами GL_ACCUM_RED_BITS, GL_ACCUM_GREEN_BITS, GL_ACCUM_BLUE_BITS, і GL_ACCUM_ALPHA_BITS. Незалежно від кількіості бітів на компонент, проміжок значень збережених у кожному компоненті являється 11. Пікселі буферу накопичення накладаться один на одного з пікселями буферу кадру.
Функція glAccum оперує над буфером накопичення. Перший аргумент, op, являється симовлічною константою, яка обирає операцію буфера накопичення. Другий аргумент, value, являється дійсним число, яке використовується у цій операції. Визначені п'ять операцій: GL_ACCUM, GL_LOAD, GL_ADD, GL_MULT і GL_RETURN.
Усі операції буферу накопичення обмежені поточною областю обрізнання і ідентично застосовуються до червоного, зеленого, синого і компоненту прозорості кожного пікселя. Якщо операції glAccum результують у значенні ззовні проміжку 11, вміст пікселів буферу накопичення являється невизначеним.
Операції є наступними:
- GL_ACCUM. Беруть значення R, G, B і A з буферу, який обраний для зчитування (перегляньте функцію glReadBuffer). Кожне заначення компоненту ділиться на 2^n -1, де n являється кількістю бітів, які виділені на кожен компонент кольору у поточному обраному буфері. Результатом являється дійсне число з проміжку 0-1, яке множиться на значення value і додається до відповідного піксельного компоненту буферу накопичення, після чого оновлюється буфер накопичення.
- GL_LOAD. Подібно до GL_ACCUM, за вийнятком поточного значення у буфері накопичення не використовується у обчисленні нового значення. Тобто, R, G, B, і A значення з поточного обраного буферу діляться на 2^n - 1, і тоді перемножуються на value, після чого зберігаються у відповідній комірці буферу накопичення, і перезаписують поточне значення.
- GL_ADD. Додає значення value до кожного R, G, B і A у буфері накопичення.
- GL_MULT. Перемножує кожен R, G, B і A у буфері накопиченні на значення value і повертає компонент до його відповідного місця у буфері накопичення.
- GL_RETURN. Передає значення буферу накопичення до колірного буферу або буферу поточно обраного на запис. Кожен компонент R, G ,B і A перемножується на значення value, після чого множиться на 2^n - 1, і обрізається до проміжку 0; 2^n - 1, і зберігається у відповідній компірці буфера дисплея. Єдиними фрагментними операціями, які застосовуються до цієї передачі являються власність пікселя, обрізання ножицями, розкид і колірні маски.
Для очищення буферу накопичення, викликайте glClearAccum з встановленими R, G, B і A значеннями, тоді викличте функцію glClear з увімкненим прапорцем буферу накопичення.
Нотатки
Тільки пікселі поточної області обрізання оновлюються за допомогою операції glAccum.
Помилки
GL_INVALID_ENUM генерується якщо оператор op не містить допустимого значення.
GL_INVALID_OPERATION генерується якщо немає відповідного буферу накопичення
GL_INVALID_OPERATION генерується якщо функція glAccum виконується між відповідними викликами glBegin і glEnd.
Пов'язані параметри
glGet з аргументом GL_ACCUM_RED_BITS
glGet з аргументом GL_ACCUM_GREEN_BITS
glGet з аргументом GL_ACCUM_BLUE_BITS
glGet з аргументом GL_ACCUM_ALPHA_BITS
Перегляньте також
glClear, glClearAccum, glCopyPixels, glDrawBuffer, glGet, glReadBuffer, glReadPixels, glScissor, glStencilOp
Оригінал
https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glAccum.xml