Прототип:
void glAccum(GLenum op, GLfloat value);
Параметры:
op : операция аккумулирующего буфера. Поддерживается GL_ACCUM, GL_LOAD, GL_ADD, GL_MULT, GL_RETURN.
value : значение операции над аккумулирующем буфером.
Описание:
Аккумулирующий буфер это своеобразный дополнительный буфер цвета, хотя изображение в нем не рисуется. Изображение
прибавляется к содержимому аккумулирующего буфера после отрисовке в буфере цвета. С помощьюе этого буфера могут
быть достигнуты эффекты antialiasing, motion blur.
Каждый пиксел в аккумулирующем буфере состоит из RGBA компонент. Количество бит на компонент зависит от конкретной
реализации. Это значение можно проверить функцией glGetIntegerv с параметром GL_ACCUM_RED_BITS,
GL_ACCUM_GREEN_BITS, GL_ACCUM_BLUE_BITS, GL_ACCUM_ALPHA_BITS. Пикселы расположены в аккумулирующем буфере точно
так же как и в буфере цвета.
Описание операций:
GL_ACCUM получает RGBA компоненты из буфера цвета выбранного для чтения. Эти значения делятся на 2n-1, где
n - количество бит на компоненту цвета. Таким образом получается значение в пределах [0;1]. Зачем это значение
умножается на value и прибавляется к текущему значению аккумулирующего буфера.
GL_LOAD тоже самое что и GL_ACCUM, за исключением того, что значение аккумулирующего буфера не учитывается, тоесть
вычисляется новое значение на основе данных только буфера цвета.
GL_ADD прибавляеюся значения RGBA компонент, умноженные на value, к текущим значениям RGBA компонент аккумулирующего
буфера.
GL_MULT умножаются значение RGBA компонент, умноженные на value, на текущим значениям RGBA компонент аккумулирующего
буфера.
GL_RETURN копирует значения RGBA компонент аккумулирующего буфера, умноженные на value, в буфер цвета.
Значения, которыми будет заполнен аккумулирующий буфер при очистке, можно задавать функцией glClearAccum.
Ошибки:
GL_INVALID_ENUM возникает когда op имеет недопустимое значение.
GL_INVALID_OPERATION возникает при вызове glAccum между парой glBegin/glEnd.
|