Gl.StencilFunc (gb.opengl)
Static Sub StencilFunc ( Function As Integer, Reference As Integer, Mask As Integer )
Détermine les fonctions avant et arrière et la valeur de référence pour le test de pochoir.
Paramètres
- func
-
Spécifie la fonction de test
Huit constantes symboliques sont valides :
Gl.NEVER,
Gl.LESS,
Gl.LEQUAL,
Gl.GREATER,
Gl.GEQUAL,
Gl.EQUAL,
Gl.NOTEQUAL, et
Gl.ALWAYS. la valeur initiale est Gl.ALWAYS.
- ref
-
Spécifie la valeur de référence pour le test de pochoir.
ref est restreint à l’étendue
,
où
est le nombre de plans de bits dans le tampon pochoir. La valeur initiale est 0.
- mask
-
Spécifie un masque avec lequel est appliqué un ET logique avec, à la fois, la valeur de référence et la valeur stockée dans le pochoir quand le test est effectué. La valeur initiale est tous à 1.
Description
Le traitement pochoir, comme la mise en tampon de profondeur,permet et interdit le tracé sur une base par-pixel.
Les plans pochoir sont d’abord tracés en recourant aux primitives de tracé GL, puis la géométrie et les images sont rendues en utilisant le masque de plans pochoir pour cacher des portions de l’écran.
L’application de pochoir est typiquement employée dans les algorithmes de rendu multi-passes pour obtenir des effets spéciaux comme le renforcement de contours, les décalcomanies, et le rendu de constructions géométriques de solides.
Le test pochoir élimine conditionnellement un pixel en se basant sur le résultat d’une comparaison entre la valeur de référence et la valeur du tampon pochoir.
Pour activer et désactiver le test, appelez
Gl.Enable et
Gl.Disable avec l’argument
Gl.STENCIL_TEST.
Pour spécifier les actions basées sur le résultat du test pochoir, appelez
Gl.StencilOp ou Gl.StencilOpSeparate.
Il peut y avoir deux jeux différents de paramètres
func,
ref, et
mask; l’un affecte les polygones de face arrière, et l’autre les polygones en face avant ainsi que les autres primitives non-polygonales.
Gl.StencilFunc définit à la fois l’état face avant et face arrière à la même valeur. Utilisez Gl.StencilFuncSeparate pour définir des valeurs différentes pour l’avant et l’arrière.
func est une constante symbolique qui détermine la fonction de comparaison du pochoir. Elle peut prendre l’une des huit valeurs de la liste qui suit.
ref est une valeur de référence entière qui est employée dans la comparaison du pochoir.
Elle est bornée à l’étendue
,
où
est le nombre de plans de bits dans le tampon pochoir.
mask est soumis à un ET logique avec, à la fois, la valeur de référence et la valeur stockée dans le pochoir, avec les valeurs résultat participant à la comparaison .
Si
stencil représente la valeur stockée dans l’emplacement du tampon pochoir correspondant, la liste suivante montre les effets de chaque fonction de comparaison qui peut être spécifiée par
func.
Le pixel n’est passé à l’étape suivante de la rastérisation que si la comparaison réussit (voir Gl.StencilOp).
Tous les tests traitent les valeurs
stencil comme des entiers non signés dans la gamme
,
où
est le nombre de plans de bits dans le tampon pochoir.
Les valeurs suivantes sont acceptées par
func:
- Gl.NEVER
-
Echoue toujours.
- Gl.LESS
-
Passe si ( ref & mask ) < ( stencil & mask ).
- Gl.LEQUAL
-
Passe si ( ref & mask ) <= ( stencil & mask ).
- Gl.GREATER
-
Passe si ( ref & mask ) > ( stencil & mask ).
- Gl.GEQUAL
-
Passe si ( ref & mask ) >= ( stencil & mask ).
- Gl.EQUAL
-
Passe si ( ref & mask ) = ( stencil & mask ).
- Gl.NOTEQUAL
-
Passe si ( ref & mask ) != ( stencil & mask ).
- Gl.ALWAYS
-
Passe toujours.
Notes
Initialement, le test pochoir est désactivé.
S’il n’y a pas de tampon pochoir, aucune modification du pochoir ne peut intervenir et c’est comme si le test passait toujours.
Gl.StencilFuncest identique à appeler Gl.StencilFuncSeparate
avec
face positionné à
Gl.FRONT_AND_BACK.
Erreurs
Gl.INVALID_ENUM est généré si
func n’est pas l’une des huit valeurs acceptées.
Gets Associés
Gl.Get avec l’argument
Gl.STENCIL_FUNC,
Gl.STENCIL_VALUE_MASK,
Gl.STENCIL_REF, Gl.STENCIL_BACK_FUNC,
Gl.STENCIL_BACK_VALUE_MASK, Gl.STENCIL_BACK_REF,
ou
Gl.STENCIL_BITS
Gl.IsEnabled avec l’argument
Gl.STENCIL_TEST
Voir aussi
Gl.StencilFuncSeparate,
Gl.StencilMaskSeparate,
Gl.StencilOpSeparate
Voir documentation originale sur le site web OpenGL