funzione glStencilOp

La funzione glStencilOp imposta le azioni di test stencil.

Sintassi

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

Parametri

Fallire

Azione da eseguire quando il test stencil ha esito negativo. Le sei costanti simboliche seguenti sono accettate.

Valore Significato
GL_KEEP
Mantiene il valore corrente.
GL_ZERO
Imposta il valore del buffer stencil su zero.
GL_REPLACE
Imposta il valore del buffer stencil su ref, come specificato da glStencilFunc.
GL_INCR
Incrementa il valore del buffer stencil corrente. Blocca il valore massimo rappresentabile senza segno.
GL_DECR
Decrementa il valore del buffer stencil corrente. Blocca a zero.
GL_INVERT
In bit inverte il valore corrente del buffer stencil.

zfail

Azione Stencil quando il test stencil supera, ma il test di profondità ha esito negativo. Accetta le stesse costanti simboliche del fail.

zpass

Azione Stencil quando il test stencil e il passaggio del test di profondità o quando il test stencil supera e non è abilitato alcun buffer di profondità o test di profondità. Accetta le stesse costanti simboliche del fail.

Valore restituito

Questa funzione non restituisce un valore.

Codici di errore

I codici di errore seguenti possono essere recuperati dalla funzione glGetError .

Nome Significato
GL_INVALID_ENUM
fail, zfail o zpass è stato qualsiasi valore diverso dai sei valori costanti definiti.
GL_INVALID_OPERATION
La funzione è stata chiamata tra una chiamata a glBegin e la chiamata corrispondente a glEnd.

Commenti

Lo stenciling, ad esempio il buffer z, abilita e disabilita il disegno su base per pixel. Si disegnare nei piani stencil usando le primitive di disegno OpenGL, quindi eseguire il rendering di geometria e immagini, usando i piani stencil per mascherare parti dello schermo. Lo stenciling viene in genere usato negli algoritmi di rendering multipass per ottenere effetti speciali, ad esempio decals, struttura e rendering di geometria solida costruttiva.

Il test stencil elimina in modo condizionale un pixel in base al risultato di un confronto tra il valore nel buffer stencil e un valore di riferimento. Il test è abilitato con chiamate glEnable e glDisable con argomento GL_STENCIL_TEST e controllato con glStencilFunc.

La funzione glStencilOp accetta tre argomenti che indicano cosa accade al valore stencil archiviato durante l'abilitazione dello stenciling. Se il test stencil ha esito negativo, nessuna modifica viene apportata ai buffer di colore o profondità del pixel e specifica cosa accade al contenuto del buffer stencil.

I valori del buffer Stencil vengono considerati interi senza segno. Quando viene incrementato e decrementato, i valori vengono bloccati su 0 e 2n 1, dove n è il valore restituito eseguendo query GL_STENCIL_BITS.

Gli altri due argomenti di glStencilOp specificano le azioni del buffer stencil devono eseguire i test del buffer di profondità successivi (zpass) o fail (zfail). Vedere glDepthFunc. Vengono specificati usando le stesse sei costanti simboliche non riuscita. Si noti che zfail viene ignorato quando non è presente alcun buffer di profondità o quando il buffer di profondità non è abilitato. In questi casi, fail e zpass specificano rispettivamente l'azione stencil quando il test stencil ha esito negativo e supera rispettivamente.

Inizialmente il test stencil è disabilitato. Se non esiste alcun buffer stencil, nessuna modifica dello stencil può verificarsi ed è come se i test stencil superino sempre, indipendentemente da qualsiasi chiamata a glStencilOp.

Le funzioni seguenti recuperano informazioni correlate a glStencilOp:

glGet con argomento GL_STENCIL_FAIL

glGet con argomento GL_STENCIL_PASS_DEPTH_PASS

glGet con argomento GL_STENCIL_PASS_DEPTH_FAIL

glGet con argomento GL_STENCIL_BITS

glIsEnabled con argomento GL_STENCIL_TEST

Requisiti

Requisito Valore
Client minimo supportato
Windows 2000 Professional [solo app desktop]
Server minimo supportato
Windows 2000 Server [solo app desktop]
Intestazione
Gl.h
Libreria
Opengl32.lib
DLL
Opengl32.dll

Vedi anche

glAlphaFunc

glBegin

glBlendFunc

glDepthFunc

glEnable

glEnd

glIsEnabled

glLogicOp

glStencilFunc