Função glStencilOp

A função glStencilOp define as ações de teste de estêncil.

Sintaxe

void WINAPI glStencilOp(
   GLenum fail,
   GLenum zfail,
   GLenum zpass
);

Parâmetros

Falhar

A ação a ser executada quando o teste de estêncil falhar. As seis constantes simbólicas a seguir são aceitas.

Valor Significado
GL_KEEP
Mantém o valor atual.
GL_ZERO
Define o valor do buffer de estêncil como zero.
GL_REPLACE
Define o valor do buffer de estêncil como ref, conforme especificado por glStencilFunc.
GL_INCR
Incrementa o valor atual do buffer de estêncil. Fixa ao valor máximo não assinado representável.
GL_DECR
Diminui o valor do buffer de estêncil atual. Fixa a zero.
GL_INVERT
Inverte bit a bit o valor do buffer de estêncil atual.

zfail

Ação de estêncil quando o teste de estêncil é aprovado, mas o teste de profundidade falha. Aceita as mesmas constantes simbólicas que falham.

zpass

Ação de estêncil quando o teste de estêncil e o teste de profundidade são aprovados, ou quando o teste de estêncil é aprovado e não há nenhum buffer de profundidade ou teste de profundidade não está habilitado. Aceita as mesmas constantes simbólicas que falham.

Retornar valor

Essa função não retorna um valor.

Códigos de erro

Os códigos de erro a seguir podem ser recuperados pela função glGetError .

Nome Significado
GL_INVALID_ENUM
fail, zfail ou zpass era qualquer valor diferente dos seis valores constantes definidos.
GL_INVALID_OPERATION
A função foi chamada entre uma chamada para glBegin e a chamada correspondente para glEnd.

Comentários

O estêncil, como o buffer z, habilita e desabilita o desenho por pixel. Você desenha nos planos de estêncil usando primitivos de desenho OpenGL e, em seguida, renderiza geometria e imagens, usando os planos de estêncil para mascarar partes da tela. O estêncil normalmente é usado em algoritmos de renderização multipasso para obter efeitos especiais, como decalques, estrutura de tópicos e renderização de geometria sólida construtiva.

O teste de estêncil elimina condicionalmente um pixel com base no resultado de uma comparação entre o valor no buffer de estêncil e um valor de referência. O teste é habilitado com chamadas glEnable e glDisable com GL_STENCIL_TEST de argumento e controlado com glStencilFunc.

A função glStencilOp usa três argumentos que indicam o que acontece com o valor de estêncil armazenado enquanto o estêncil está habilitado. Se o teste de estêncil falhar, nenhuma alteração será feita nos buffers de cor ou profundidade do pixel e a falha especificará o que acontece com o conteúdo do buffer de estêncil.

Os valores de buffer de estêncil são tratados como inteiros sem sinal. Quando incrementados e decrementados, os valores são fixados em 0 e 2n 1, em que n é o valor retornado consultando GL_STENCIL_BITS.

Os outros dois argumentos para glStencilOp especificam ações de buffer de estêncil caso os testes de buffer de profundidade subsequentes tenham êxito (zpass) ou falhem (zfail). (Consulte glDepthFunc.) Elas são especificadas usando as mesmas seis constantes simbólicas que falham. Observe que zfail é ignorado quando não há buffer de profundidade ou quando o buffer de profundidade não está habilitado. Nesses casos, fail e zpass especificam a ação de estêncil quando o teste de estêncil falha e é aprovado, respectivamente.

Inicialmente, o teste de estêncil está desabilitado. Se não houver nenhum buffer de estêncil, nenhuma modificação de estêncil poderá ocorrer e será como se os testes de estêncil sempre passassem, independentemente de qualquer chamada para glStencilOp.

As seguintes funções recuperam informações relacionadas ao glStencilOp:

glGet com GL_STENCIL_FAIL de argumento

glGet com GL_STENCIL_PASS_DEPTH_PASS de argumento

glGet com GL_STENCIL_PASS_DEPTH_FAIL de argumento

glGet com GL_STENCIL_BITS de argumento

glIsEnabled com GL_STENCIL_TEST de argumento

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho
Gl.h
Biblioteca
Opengl32.lib
DLL
Opengl32.dll

Confira também

glAlphaFunc

glBegin

glBlendFunc

glDepthFunc

glEnable

glEnd

glIsEnabled

glLogicOp

glStencilFunc