Documentation de Gambas - /comp/gb.opengl/gl/blendfunc

/comp/gb.opengl/gl/blendfunc

# Gl.BlendFunc (gb.opengl)

Static Sub BlendFunc ( SrcFactor As Integer, DstFactor As Integer )

Spécifie l’arithmétique des pixels

## Paramètres

sfactor

  Spécifie comment les facteurs de mélange de la source rouge, vert, bleu et alpha sont calculés. La valeur initiale est Gl.ONE.

dfactor

  Spécifie comment les facteurs de mélange de la destination rouge, vert, bleu et alpha sont calculés. Les constantes symboliques suivantes sont acceptées : Gl.ZERO, Gl.ONE, Gl.SRC_COLOR, Gl.ONE_MINUS_SRC_COLOR, Gl.DST_COLOR, Gl.ONE_MINUS_DST_COLOR, Gl.SRC_ALPHA, Gl.ONE_MINUS_SRC_ALPHA, Gl.DST_ALPHA, Gl.ONE_MINUS_DST_ALPHA. Gl.CONSTANT_COLOR, Gl.ONE_MINUS_CONSTANT_COLOR, Gl.CONSTANT_ALPHA, et Gl.ONE_MINUS_CONSTANT_ALPHA. La valeur initiale est Gl.ZERO.

### Description

Les pixels peuvent être tracés à l’aide de la fonction qui mélange les valeurs RGBA entrantes (source) avec les valeurs RGBA déjà présentes dans le tampon de trame (les valeurs destination). Le mélange est initialement désactivé. Utilisez Gl.Enable et Gl.Disable avec l’argument Gl.GL_BLEND pour activer ou désactiver le mélange.

Gl.BlendFunc définit l’opération de mélange quand elle est activée. sfactor spécifie quelle Méthode est employée pour mettre à l’échelle les composantes couleur de la source. dfactor spécifie quelle méthode est employée pour mettre à l’échelle les composantes couleur de la destination. Les deux paramètres doivent être l’une des constantes symboliques suivantes : Gl.ZERO, Gl.ONE, Gl.SRC_COLOR, Gl.ONE_MINUS_SRC_COLOR, Gl.DST_COLOR, Gl.ONE_MINUS_DST_COLOR, Gl.SRC_ALPHA, Gl.ONE_MINUS_SRC_ALPHA, Gl.DST_ALPHA, Gl.ONE_MINUS_DST_ALPHA, Gl.CONSTANT_COLOR, Gl.ONE_MINUS_CONSTANT_COLOR, Gl.CONSTANT_ALPHA, Gl.ONE_MINUS_CONSTANT_ALPHA, Gl.SRC_ALPHA_SATURATE, Gl.SRC1_COLOR, Gl.ONE_MINUS_SRC1_COLOR, Gl.SRC1_ALPHA, et Gl.ONE_MINUS_SRC1_ALPHA. Les méthodes possibles sont écrites dans la table suivante. Chaque méthode définit quatre facteurs d’échelle, un pour le rouge, le vert, le bleu et alpha. Dans la table et les équations subséquentes, composante couleur de source en premier, composante couleur de source et destination ensuite, sont référencées comme R s0 G s0 B s0 A s0 , R s1 G s1 B s1 A s1 et R d G d B d A d , respectivement. La couleur specifiée par Gl.BlendColor est référencée comme R c G c B c A c . Elles sont vues comme ayant des valeurs entières entre 0 et k R k G k B k A , où k R k G k B k A ,

Les facteurs d’échelle sources et destination sont référencés comme s R s G s B s A et d R d G d B d A . Les facteurs d’échelle décrits dans la table, notés f R f G f B f A , représentent soit le facteur de la source soit de la destination. Tous les facteurs d’échelle ont pour gamme 0 1 .

paramètre | f R f G f B f A
--- | ---
Gl.ZERO | 0 0 0 0
Gl.ONE | 1 1 1 1
Gl.SRC_COLOR | R s0 k R G s0 k G B s0 k B A s0 k A
Gl.ONE_MINUS_SRC_COLOR | 1 1 1 1 - R s0 k R G s0 k G B s0 k B A s0 k A
Gl.DST_COLOR | R d k R G d k G B d k B A d k A
Gl.ONE_MINUS_DST_COLOR | 1 1 1 1 - R d k R G d k G B d k B A d k A
Gl.SRC_ALPHA | A s0 k A A s0 k A A s0 k A A s0 k A
Gl.ONE_MINUS_SRC_ALPHA | 1 1 1 1 - A s0 k A A s0 k A A s0 k A A s0 k A
Gl.DST_ALPHA | A d k A A d k A A d k A A d k A
Gl.ONE_MINUS_DST_ALPHA | 1 1 1 1 - A d k A A d k A A d k A A d k A
Gl.CONSTANT_COLOR | R c G c B c A c
Gl.ONE_MINUS_CONSTANT_COLOR | 1 1 1 1 - R c G c B c A c
Gl.CONSTANT_ALPHA | A c A c A c A c
Gl.ONE_MINUS_CONSTANT_ALPHA | 1 1 1 1 - A c A c A c A c
Gl.SRC_ALPHA_SATURATE | i i i 1
Gl.SRC1_COLOR | R s1 k R G s1 k G B s1 k B A s1 k A
Gl.ONE_MINUS_SRC1_COLOR | 1 1 1 1 - R s1 k R G s1 k G B s1 k B A s1 k A
Gl.SRC1_ALPHA | A s1 k A A s1 k A A s1 k A A s1 k A
Gl.ONE_MINUS_SRC1_ALPHA | 1 1 1 1 - A s1 k A A s1 k A A s1 k A A s1 k A

Dans la table,

i `` min ⁡ A s k A - A d k A

Pour déterminer la valeur mélangée RGBA d’un pixel, le système utilise les équations suivantes :

R d `` min ⁡ k R R s ⁢ s R + R d ⁢ d R G d `` min ⁡ k G G s ⁢ s G + G d ⁢ d G B d `` min ⁡ k B B s ⁢ s B + B d ⁢ d B A d `` min ⁡ k A A s ⁢ s A + A d ⁢ d A

Malgré la précision apparente des équations ci-dessus, l’arithmétique de mélange n’est pas spécifiée exactement, car le mélange s’opère avec des valeurs de couleur entières imprécises. Cependant, un facteur de mélange qui serait égal à un est garanti ne pas modifier son multiplicande, et un facteur de mélange égal à zéro force sont multiplicande à zéro. Ainsi, par exemple, quand SrcFactor est Gl.GL_SRC_ALPHA, dfactor est Gl.GL_ONE_MINUS_SRC_ALPHA, et A s est égal à k A , l’équation se réduit à un simple remplacement :

R d `` R s G d `` G s B d `` B s A d `` A s

### Exemples

La transparence est mieux implémentée en utilisant la fonction de mélange (Gl.SRC_ALPHA, Gl.ONE_MINUS_SRC_ALPHA), avec les primitives triées de la plus lointaine à la plus proche. Notez que ce calcul de transparence ne nécessite pas la présence du plan de bit alpha dans le tampon de trame.

La fonction de mélange (Gl.SRC_ALPHA, Gl.ONE_MINUS_SRC_ALPHA) est également utile pour le rendu de l’anticrénelage de points et de lignes dans un ordre arbitraire.

L’anticrénelage de polygone est optimisé en utilisant la fonction de mélange (Gl.SRC_ALPHA_SATURATE, Gl.ONE) avec des polygones triés du plus proche au plus lointain. (Voir la page de référence Gl.Enable , Gl.Disable et l’argument Gl.GL_POLYGON_SMOOTH pour information sur l’anticrénelage de polygone). Les plans de bits destination alpha, qui doivent être présents pour que cette fonction de mélange opère correctement, enregistrent les résultats accumulés.

### Notes

L’alpha entrant (source) est conçu de manière correcte comme une opacité de matériau, entre 1.0 ( K A ), représentant l’opacité complète, et 0.0 (0), représentant la transparence complète.

Quand plus d’un tampon couleur est activé pour le tracé, le mélange est fait séparément pour chaque tampon actif, en utilisant comme couleur destination le contenu de ce tampon. (Voir Gl.DrawBuffer )

Quand la double source est activée (c. à d. quand l’un des facteurs de mélange requiert l’entrée de la deuxième couleur) le nombre maximum de tampons de tracé activés est donné par Gl.MAX_DUAL_SOURCE_DRAW_BUFFERS, qui doit être plus petit que Gl.MAX_DRAW_BUFFERS.

### Erreurs

Gl.GL_INVALID_ENUM est générée si SFactor ou dFactor ne sont pas des valeurs acceptées.

### Gets Associés

Gl.Get avec l’argument Gl.GL_BLEND_SRC

Gl.Get avec l’argument Gl.BLEND_DST

Gl.IsEnabled avec l’argument GL.BLEND

### Voir aussi

Gl.BlendColor, Gl.BlendEquation, Gl.BlendFuncSeparate, Gl.Clear, Gl.DrawBuffer, Gl.Enable, Gl.LogicOp, Gl.StencilFunc

Copyright © 1991-2006 Silicon Graphics, Inc. Ce document est sous licence SGI Free Software B License. Pour les details, voir http://oss.sgi.com/projects/FreeB.

➡ Voir la documentation originale