Функция glStencilOp
Функция glStencilOp задает действия теста набора элементов.
Синтаксис
void WINAPI glStencilOp(
GLenum fail,
GLenum zfail,
GLenum zpass
);
Параметры
-
Не
-
Действие, выполняемое при сбое теста набора элементов. Принимаются следующие шесть символических констант.
Значение Значение - GL_KEEP
Сохраняет текущее значение. - GL_ZERO
Задает значение буфера набора элементов равным нулю. - GL_REPLACE
Задает для буфера набора элементов значение ref, как указано в glStencilFunc. - GL_INCR
Увеличивает текущее значение буфера набора элементов. Зажимает максимально допустимое значение без знака. - GL_DECR
Уменьшает текущее значение буфера набора элементов. Зажимает до нуля. - GL_INVERT
Побитовое инвертирует текущее значение буфера трафарета. -
zfail
-
Действие набора элементов, когда проверка набора элементов пройдена, но проверка глубины завершается сбоем. Принимает те же символьные константы, что и сбой.
-
zpass
-
Действие набора элементов, когда тест набора элементов и проверка глубины пройдены, или когда тест набора элементов пройден и либо отсутствует буфер глубины, либо тестирование глубины не включено. Принимает те же символьные константы, что и сбой.
Возвращаемое значение
Эта функция не возвращает значение.
Коды ошибок
Следующие коды ошибок могут быть получены функцией glGetError .
Имя | Значение |
---|---|
|
fail, zfail или zpass — это любое значение, отличное от шести определенных значений констант. |
|
Функция была вызвана между вызовом glBegin и соответствующим вызовом glEnd. |
Комментарии
Набор элементов, например z-буферизация, включает и отключает рисование по пикселям. Вы рисуете в плоскостях трафарета с помощью примитивов рисования OpenGL, а затем отрисовываете геометрию и изображения, используя плоскости трафарета для маскирования частей экрана. Набор элементов обычно используется в алгоритмах многопроходной отрисовки для достижения специальных эффектов, таких как наклейки, структурирование и конструктивная отрисовка сплошной геометрии.
Тест набора элементов условно исключает пиксель на основе результата сравнения между значением в буфере набора элементов и ссылочным значением. Тест включается с помощью вызовов glEnable и glDisable с аргументами GL_STENCIL_TEST и управляется с помощью glStencilFunc.
Функция glStencilOp принимает три аргумента, которые указывают, что происходит с сохраненным значением набора элементов при включенном наборе элементов. Если проверка набора элементов завершается сбоем, в буферах цвета или глубины пикселя не вносятся изменения, а сбой указывает, что происходит с содержимым буфера трафарета.
Значения буфера набора элементов обрабатываются как целые числа без знака. При приращении и уменьшении значения зажимаются до 0 и 2n 1, где n — это значение, возвращаемое запросом GL_STENCIL_BITS.
Два других аргумента для glStencilOp указывают действия буфера трафарета, если последующие тесты буфера глубины будут успешными (zpass) или неудачными (zfail). (См. раздел glDepthFunc.) Они указываются с помощью шести символьных констант, что и сбой. Обратите внимание, что zfail игнорируется, если буфер глубины отсутствует или если буфер глубины не включен. В таких случаях сбой и zpass указывают действие набора элементов, если тест набора элементов завершается сбоем и проходит соответственно.
Изначально проверка набора элементов отключена. Если буфер трафарета отсутствует, изменение набора элементов не может происходить, и тесты набора элементов всегда проходят, независимо от вызова glStencilOp.
Следующие функции извлекают сведения, связанные с glStencilOp:
glGet с аргументом GL_STENCIL_FAIL
glGet с аргументом GL_STENCIL_PASS_DEPTH_PASS
glGet с аргументом GL_STENCIL_PASS_DEPTH_FAIL
glGet с аргументом GL_STENCIL_BITS
glIsEnabled с аргументом GL_STENCIL_TEST
Требования
Требование | Значение |
---|---|
Минимальная версия клиента |
Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера |
Windows 2000 Server [только классические приложения] |
Заголовок |
|
Библиотека |
|
DLL |
|