Поделиться через


Функция glAccum

Функция glAccum работает с буфером накопления.

Синтаксис

void WINAPI glAccum(
   GLenum  op,
   GLfloat value
);

Параметры

Op

Операция буфера накопления. Ниже приведены допустимые символические константы.

Значение Значение
GL_ACCUM
Получает значения R, G, B и A из буфера, выбранного в данный момент для чтения (см. glReadBuffer). Значение каждого компонента делится на 2n 1, где n — количество битов, выделенных каждому компоненту цвета в выбранном буфере. Результатом является значение с плавающей запятой в диапазоне [0,1], которое умножается на значение и добавляется к соответствующему компоненту пикселей в буфере накопления, тем самым обновляя буфер накопления.
GL_LOAD
Аналогично GL_ACCUM, за исключением того, что текущее значение в буфере накопления не используется при вычислении нового значения. То есть значения R, G, B и A из выбранного буфера делятся на 2n 1, умножаются на значение, а затем сохраняются в соответствующей ячейке буфера накопления, перезаписав текущее значение.
GL_ADD
Добавляет значение к каждому объекту R, G, B и A в буфере накопления.
GL_MULT
Умножает каждый элемент R, G, B и A в буфере накопления на значение и возвращает масштабируемый компонент в соответствующее расположение буфера накопления.
GL_RETURN
Передает значения буфера накопления в буфер цвета или буферы, выбранные для записи. Каждый компонент R, G, B и A умножается на значение, затем умножается на 2n 1, зажимается в диапазоне [0, 2n 1 ] и сохраняется в соответствующей ячейке буфера отображения. Единственные операции фрагмента, которые применяются к этой передаче: владение пикселями, ножницы, смеяние и цветовые маски.

value

Значение с плавающей запятой, используемое в операции буфера накопления. Параметр op определяет, как используется значение .

Возвращаемое значение

Эта функция не возвращает значение.

Коды ошибок

Следующие коды ошибок могут быть получены функцией glGetError .

Имя Значение
GL_INVALID_ENUM
op не является допустимым значением.
GL_INVALID_OPERATION
Буфер накопления отсутствует или функция glAccum была вызвана между вызовом glBegin и соответствующим вызовом glEnd.

Комментарии

Буфер накопления — это буфер цвета с расширенным диапазоном. Изображения не отображаются в нем. Скорее, изображения, отображаемые в одном из цветовых буферов, добавляются к содержимому буфера накопления после отрисовки. Вы можете создавать такие эффекты, как сглаживание (точек, линий и многоугольников), размытие движения и глубина поля, путем накопления изображений, созданных с помощью различных матриц преобразования.

Каждый пиксель в буфере накопления состоит из красного, зеленого, синего и альфа-значений. Количество битов на компонент в буфере накопления зависит от реализации. Вы можете проверить это число, вызвав glGetIntegerv четыре раза с аргументами GL_ACCUM_RED_BITS, GL_ACCUM_GREEN_BITS, GL_ACCUM_BLUE_BITS и GL_ACCUM_ALPHA_BITS соответственно. Однако независимо от количества битов на компонент, диапазон значений, хранящихся в каждом компоненте, равен [1,?1]. Пиксели буфера накопления сопоставляются один к одному с пикселями framebuffer.

Функция glAccum работает с буфером накопления. Первый аргумент, op, является символьной константой, которая выбирает операцию буфера накопления. Второй аргумент, value, — это значение с плавающей запятой, которое будет использоваться в этой операции. Указаны пять операций: GL_ACCUM, GL_LOAD, GL_ADD, GL_MULT и GL_RETURN.

Все операции буфера накопления ограничены областью текущего ножницы и применяются одинаково к красному, зеленому, синему и альфа-компонентам каждого пикселя. Содержимое компонента пикселя буфера накопления не определено, если операция glAccum приводит к значению за пределами диапазона [1,1].

Чтобы очистить буфер накопления, используйте функцию glClearAccum , чтобы указать значения R, G, B и A, чтобы задать ему значение , и выпустить функцию glClear с включенным буфером накопления.

При любой операции glAccum обновляются только пиксели в текущем поле ножницы.

Следующие функции извлекают сведения, связанные с функцией glAccum :

glGet с аргументом GL_ACCUM_RED_BITS

glGet с GL_ACCUM_GREEN_BITS аргументов

glGet с аргументом GL_ACCUM_BLUE_BITS

glGet с аргументом GL_ACCUM_ALPHA_BITS

Требования

Требование Значение
Минимальная версия клиента
Windows 2000 Professional [только классические приложения]
Минимальная версия сервера
Windows 2000 Server [только классические приложения]
Заголовок
Gl.h
Библиотека
Opengl32.lib
DLL
Opengl32.dll

См. также раздел

glBegin

glBlendFunc

glClear

glClearAccum

glCopyPixels

glEnd

glGet

glLogicOp

glPixelStore

glPixelTransfer

glReadBuffer

glReadPixels

glScissor

glStencilOp