ВУЗ:
Составители:
Рубрика:
58
14.3 Буфер аккумулятора
В OpenGL существует специально отведенный внутренний буфер для временного хранения визу-
альных изображений. При этом возможен процесс накапливания значений пиксель изображений. Кроме
этого, имеется возможность попиксельных операций над этими изображениями. На практике, подобные
буферы используют для получения эффектов нерезкости, сглаживания, "мягких" теней и т.п.
Операции с буфером накопления осуществляются командой
void glAccum (GLenum op, GLfloat value)
Параметр op задает операцию над пикселями и может принимать следующие значения:
Константа Операция над пикселями
GL_LOAD ПИКСЕЛИ БЕРУТСЯ ИЗ БУФЕРА, ВЫ-
БРАННОГО НА ЧТЕНИЕ КОМАНДОЙ
GLREADBUFFER(), ИХ ЗНАЧЕНИЯ УМ-
НОЖАЮТСЯ НА VALUE И ЗАНОСЯТСЯ
В БУФЕР-АККУМУЛЯТОР
GL_
ACCUM
Аналогично GL_LOAD, только результат не
просто записывается в буфер-аккумулятор, а
складывается с уже имеющимся в буфере
GL_MULT
Пиксели в буфере аккумулятора умножаются
на значение переменной value
GL_ ADD
Пиксели в буфере аккумулятора складыва-
ются со значением переменной value
GL_ RE-
TURN
Изображение переносится из буфера аккуму-
лятора в буфер, выбранный для записи. Пе-
ред этим значение каждого пикселя умножа-
ется на value
Например, чтобы "смазать" изображение, в буфере аккумулятора одна и та же сцена рисуется не-
сколько раз. Каждый раз с немного измененными значениями координат расположения камеры.
Буфер аккумулятор можно "очищать" определенными значениями составляющих цвета R, G, B и A.
Для этого используется команда:
void glClearAccum (GLfloat R, GLfloat G, GLfloat B, GLfloat alpha)
14.4 Буфер глубины
Работая с трехмерной графикой нам приходится постоянно сталкиваться с глубиной сцены. На ос-
новании глубины работает алгоритм, использующий Z-буфер, для удаления невидимых граней. Каждое
поступающее значение глубины фрагмента сравнивается с уже имеющимся в буфере глубины и выво-
дится на экран (или нет) в зависимости от результатов выполнения этого теста.
По умолчанию тест глубины заблокирован. Для его включения/выключения используется команда
glEnable/glDisable с аргументом GL_DEPTH_TEST. Функция сравнения, используемая в тесте глуби-
ны, задается командой
void glDepthFunc (GLenum func)
Данная команда определяет функцию сравнения для поступающего z-значения с тем, которое было
в буфере глубины. Функция сравнения задается параметром func, которое может принимать следующие
символьные значения:
Константа Тест завершается положительно…
GL_NEVER НИКОГДА
GL_LESS
Если поступающее z-значение меньше, чем
хранящееся в буфере глубины
Страницы
- « первая
- ‹ предыдущая
- …
- 54
- 55
- 56
- 57
- 58
- …
- следующая ›
- последняя »