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 |
---|---|
|
fail, zfail o zpass è stato qualsiasi valore diverso dai sei valori costanti definiti. |
|
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 |
|
Libreria |
|
DLL |
|