fonction glStencilOp

La fonction glStencilOp définit les actions de test de gabarit.

Syntaxe

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

Paramètres

Échouer

Action à effectuer en cas d’échec du test de gabarit. Les six constantes symboliques suivantes sont acceptées.

Valeur Signification
GL_KEEP
Conserve la valeur actuelle.
GL_ZERO
Définit la valeur de la mémoire tampon du gabarit sur zéro.
GL_REPLACE
Définit la valeur de la mémoire tampon de gabarit sur ref, comme spécifié par glStencilFunc.
GL_INCR
Incrémente la valeur actuelle de la mémoire tampon de gabarit. Limite à la valeur non signée pouvant être représentée maximale.
GL_DECR
Décrémente la valeur actuelle de la mémoire tampon de gabarit. Serre à zéro.
GL_INVERT
Au niveau du bit, inverse la valeur actuelle de la mémoire tampon de gabarit.

zfail

Action de gabarit lorsque le test de gabarit réussit, mais que le test de profondeur échoue. Accepte les mêmes constantes symboliques comme échec.

zpass

Action de gabarit lorsque le test de gabarit et le test de profondeur réussissent, ou quand le test de gabarit réussit et qu’il n’y a pas de tampon de profondeur ou que le test de profondeur n’est pas activé. Accepte les mêmes constantes symboliques comme échec.

Valeur renvoyée

Cette fonction ne retourne pas de valeur.

Codes d’erreur

Les codes d’erreur suivants peuvent être récupérés par la fonction glGetError .

Name Signification
GL_INVALID_ENUM
fail, zfail ou zpass était toute valeur autre que les six valeurs constantes définies.
GL_INVALID_OPERATION
La fonction a été appelée entre un appel à glBegin et l’appel correspondant à glEnd.

Notes

Le pochoir, comme la mise en mémoire tampon z, active et désactive le dessin par pixel. Vous dessinez dans les plans de gabarit à l’aide de primitives de dessin OpenGL, puis affichez la géométrie et les images, en utilisant les plans de gabarit pour masquer des parties de l’écran. La sténonciation est généralement utilisée dans les algorithmes de rendu multipass pour obtenir des effets spéciaux, tels que des décalques, des plan et un rendu constructif de la géométrie pleine.

Le test de gabarit élimine de manière conditionnelle un pixel en fonction du résultat d’une comparaison entre la valeur dans la mémoire tampon de gabarit et une valeur de référence. Le test est activé avec des appels glEnable et glDisable avec des arguments GL_STENCIL_TEST et contrôlé avec glStencilFunc.

La fonction glStencilOp prend trois arguments qui indiquent ce qui se passe à la valeur de gabarit stockée lors de l’activation du pochoir. Si le test de gabarit échoue, aucune modification n’est apportée aux mémoires tampons de couleur ou de profondeur du pixel, et l’échec spécifie ce qui se passe pour le contenu de la mémoire tampon de gabarit.

Les valeurs de mémoire tampon de gabarit sont traitées comme des entiers non signés. Lorsqu’elles sont incrémentées et décrémentées, les valeurs sont limitées à 0 et 2n 1, où n est la valeur retournée par l’interrogation de GL_STENCIL_BITS.

Les deux autres arguments de glStencilOp spécifient les actions de mémoire tampon de gabarit si les tests de mémoire tampon de profondeur suivants réussissent (zpass) ou échouent (zfail). (Voir glDepthFunc.) Elles sont spécifiées à l’aide des six mêmes constantes symboliques que l’échec. Notez que l’option kubernetail est ignorée lorsqu’il n’y a pas de mémoire tampon de profondeur ou lorsque la mémoire tampon de profondeur n’est pas activée. Dans ce cas, fail et zpass spécifient l’action de gabarit lorsque le test de gabarit échoue et réussit, respectivement.

Initialement, le test de gabarit est désactivé. S’il n’y a pas de mémoire tampon de gabarit, aucune modification de gabarit ne peut se produire et c’est comme si les tests de gabarit réussissent toujours, quel que soit l’appel à glStencilOp.

Les fonctions suivantes récupèrent des informations relatives à glStencilOp :

glGet avec GL_STENCIL_FAIL d’arguments

glGet avec argument GL_STENCIL_PASS_DEPTH_PASS

glGet avec argument GL_STENCIL_PASS_DEPTH_FAIL

glGet avec argument GL_STENCIL_BITS

glIsEnabled avec argument GL_STENCIL_TEST

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge
Windows 2000 Server [applications de bureau uniquement]
En-tête
Gl.h
Bibliothèque
Opengl32.lib
DLL
Opengl32.dll

Voir aussi

glAlphaFunc

glBegin

glBlendFunc

glDepthFunc

glEnable

glEnd

glIsEnabled

glLogicOp

glStencilFunc