Gl.Accum (gb.opengl)
Static Sub Accum ( Operation As Integer, Value As Float )
Opère sur le tampon d’accumulation
Paramètres
- op
-
Spécifie l’opération dans le tampon d’accumulation.
Les constantes symbolique
Gl.ACCUM,
Gl.LOAD,
Gl.ADD,
Gl.MULT,
et
Gl.RETURN sont acceptées.
- value
-
Spécifie une valeur en virgule flottante utilisée pour l’opération dans le tampon d’accumulation.
op détermine comment la valeur est utilisée.
Description
Le tampon d’accumulation est un tampon d’étendue de couleur. Les images n’y sont pas restituées. Au lieu de cela, les images dont le rendu est dans l’un des tampons de couleur sont ajoutées au contenu du tampon d’accumulation après le rendu. Des effets comme l’anti-crénelage (de points, de lignes, et de polygones), flou directionnel, et profondeur de champ peuvent être créés en accumulant des images générées avec différentes matrices de transformation.
Chaque pixel du tampon d’accumulation est constitué des valeurs rouge, vert, bleu et alpha. Le nombre de bits par composante dans le tampon d’accumulation dépend de l’implémentation. Vous pouvez examiner ce nombre en appelant quatre fois Gl.GetIntegerv avec les arguments Gl.ACCUM_RED_BITS, Gl.ACCUM_GREEN_BITS,
Gl.ACCUM_BLUE_BITS, and Gl.ACCUM_ALPHA_BITS, respectivement . Quelque soit le nombre de bits par composante, cependant, la gamme de valeurs stockées pour chaque composante est . Les pixels du tampon d’accumulation sont cartographiés un par un avec les pixels du tampon de trame buffer.
Gl.Accum opère sur le tampon d’accumulation. Le premier argument, op, est une constante symbolique qui sélectionne une opération avec le tampon d’accumulation. Le second argument, Value, est une valeur en virgule flottante à utiliser pour cette opération. Cinq opérations sont spécifiées : Gl.ACCUM, Gl.LOAD, Gl.ADD,
Gl.MULT, et Gl.RETURN.
Toutes les opérations avec le tampon d’accumulation sont limitées à la zone de la boîte de découpage courante et sont appliquées identiquement aux composantes valeurs rouge, vert, bleu et alpha de chaque pixel.
Si l’opération Gl.Accum aboutit à une valeur hors du domaine
,
Le contenu des composantes d’un pixel du tampon d’accumulation est indéfini
Les operationssont comme suit :
- Gl.ACCUM
-
Récupère les valeurs rouge, vert, bleu et alpha du tampon courant sélectionné en lecture (voir Gl.ReadBuffer).
Chaque valeur de composante est divisée par
,
où
est le nombre de bits alloué pour chaque composante couleur dans le tampon sélectionné en cours.
Le résultat est une valeur en virgule flottante dans le domaine
,
qui est multipliée par Value et ajoutée à la composante du pixel correspondant dans le tampon d’accumulation, mettant à jour, de ce fait, le tampon d’accumulation.
- Gl.LOAD
-
est similaire à GL.ACCUM, excepté que la valeur courante dans le tampon d’accumulation n’est pas utilisée dans le calcul de la nouvelle valeur. C'est-à-dire que les valeurs rouge, vert, bleu et alpha du tampon courant sélectionné sont divisées by
,
multipliées par Value, puis enregistrées dans la cellule correspondante du tampon d’accumulation, écrasant la valeur courante.
- Gl.ADD
-
Ajoute Value à chaque valeur rouge, vert, bleu et alpha dans le tampon d’accumulation.
- Gl.MULT
-
Multiplie chaque valeur rouge, vert, bleu et alpha dans le tampon d’accumulation par Value et retourne la composante mise à l’échelle à sa position correspondante dans le tampon d’accumulation.
- Gl.RETURN
-
Transfère les valeurs du tampon d’accumulation vers le tampon couleur ou les tampons actuellement sélectionnés en écriture. Chaque valeur de composante rouge, vert, bleu et alpha est multipliée par Value, puis par ,
restreinte au domaine
,
et enregistrée dans la cellule correspondante du tampon d’affichage. Les seules opérations sur les fragments qui sont appliquées à ce transfert sont l’appartenance de pixel, ciseaux, "dithering", et masque d’écriture de couleur.
Le tampon d’accumulation est effacé en appelant Gl.ClearAccum avec les valeurs rouge, vert, bleu et alpha à définir, puis en émettant une commande Gl.Clear avec le tampon d’accumulation activé.
Notes
Seuls les pixels à l’intérieur de la boîte de découpage sont mis à jour par une opération Gl.Accum.
Erreurs
Gl.INVALID_ENUM est générée si op n’est pas une valeur acceptée.
Gl.INVALID_OPERATION est générée s’il n’y a pas de tampon d’accumulation.
Gl.INVALID_OPERATION est générée si Gl.Accum est appelée entre un appel à Gl.Begin et l’appel correspondant à Gl.End.
Gets Associés
Gl.Get avec l’argument Gl.ACCUM_RED_BITS
Gl.Get avec l’argument t Gl.ACCUM_GREEN_BITS
Gl.Get avec l’argument t Gl.ACCUM_BLUE_BITS
Gl.Get avec l’argument Gl.ACCUM_ALPHA_BITS
Voir aussi
Voir documentation originale sur le site web OpenGL