Gl.Uniform2fv (gb.opengl.glsl)
Static Sub Uniform2fv ( Location As Integer, Values As Float[] )
Spécifie la valeur d’une variable uniforme pour l’ objet
Programme en cours.
Paramètres
- location
-
Spécifie l’emplacement de la variable uniforme à modifier.
-
v0,
v1,
v2,
v3
-
Spécifie la nouvelle valeur de la variable uniforme spécifiée.
Paramètres
- location
-
Spécifie l’emplacement de la variable uniforme à modifier.
- count
-
Spécifie le nombre d’éléments à modifier. Ce doit être 1 si la variable uniforme visée n’est pas un tableau, et 1 ou plus si c’est un tableau.
- value
-
Spécifie un pointeur vers un tableau de count valeurs qui seront utilisées pour mettre à jour la variable uniforme spécifiée.
Paramètres
- location
-
Spécifie l’emplacement de la variable uniforme à modifier.
- count
-
Spécifie le nombre de matrices à modifier. Ce doit être 1 si la
variable uniforme visée n’est pas un tableau de matrices, et 1 ou plus si c’est un tableau de matrices.
- transpose
-
Spécifie si l’on doit transposer la matrice lorsque les valeurs sont chargées dans la variable uniforme.
.
- value
-
Spécifie un pointeur vers un tableau de count valeurs qui peuvent être utilisées pour mettre à jour la variable uniforme spécifiée.
Description
Gl.Uniform modifie la valeur d’une variable uniforme
ou un tableau de variables uniformes. L’emplacement de la variable uniforme à modifier est spécifié par
location, qui doit être une valeur retournée par
Gl.GetUniformLocation.
Gl.Uniform opere sur l’objet programme qui est devenu partie de l’état courant lors de l’appel à
Gl.UseProgram.
Les commandes
Gl.Uniform{1|2|3|4}{f|i|ui} sont utilisées pour changer la valeur de la variable uniforme spécifiée par
location en employant les valeurs passées comme arguments. Le nombre spécifié dans la commande doit concorder avec le nombre de composantes dans le type de donnée de la variable uniforme spécifiée (ex :
1 pour float, int, unsigned int, bool;
2 pour vec2, ivec2, uvec2, bvec2, etc.). Le suffixe
f indique que des valeurs flottantes sont passées; le suffixe
i indique que des valeurs entières sont passées; le suffixe
ui indique que des entiers non signé sont passés, et ce type doit également concorder avec le type la variable uniforme spécifiée. Les variants
i de cette fonction doivent être utilisés pour fournir des valeurs aux variables uniformes définies comme int, ivec2, ivec3, ivec4, ou des tableaux de ces dernières. Les variants
ui de cette fonction doivent être utilisés pour fournir des valeurs aux variables uniformes définies comme unsigned int, uvec2, uvec3, uvec4, ou des tableaux de ces dernières. Les variants
f doivent être utilisés pour fournir des valeurs aux variables uniformes de type float, vec2, vec3, vec4, ou des tableaux de ces dernières. Chacun des variants
i,
ui ou
f peut être utilisé pour fournir des valeurs aux variables uniformes de type bool, bvec2, bvec3, bvec4, ou des tableaux de ces dernières. La variable uniforme sera mise à false si sa valeur entrée est 0 ou 0.0f, et à true dans les autres cas.
Toutes les variables uniformes actives définies dans un objet programme sont initialisées à 0 quand l’objet programme est lié avec succès. Elles conservent les valeurs assignées par un appel à o
Gl.Uniform jusqu’à la prochaine opération de liaison réussie avec l’objet programme, lorsqu’elles sont à nouveau initialisées à 0.
Les commandes
Gl.Uniform{1|2|3|4}{f|i|ui}v peuvent être utilisées pour modifier une variable uniforme isolée ou un tableau variable uniforme. Ces commandes passent un compte et un pointeur vers les valeurs à charger dans la variable uniforme ou le tableau. Un compte de 1 peut être utilisé pour modifier la valeur d’une variable uniforme isolée, et un compte de 1 ou plus pour modifier entièrement un tableau ou une partie de tableau. Lors du chargement de
n éléments débutant à une position arbitraire
m au sein d’un tableau variable uniforme, les éléments
m +
n - 1 du tableau variable uniforme seront remplacés par les nouvelles valeurs. Si
m +
n - 1 est plus grand que la taille du tableau variable uniforme, les valeurs pour tous les éléments au delà de la fin du tableau seront ignorées. Le nombre spécifié dans le nom de la commande indique le nombre de composantes pour chaque élément de
value, et il doit correspondre au nombre de composantes dans le type de données de la variable uniforme spécifiée (ex :,
1 pour float, int, bool;
2 pour vec2, ivec2, bvec2, etc.). Le type de donnée spécifié dans le nom de la commande doit s’accorder avec le type de donnée de la variable uniforme spécifiée comme décrit précédemment pour
Gl.Uniform{1|2|3|4}{f|i|ui}.
Pour les tableaux variable uniforme, chaque élément du tableau est considéré comme étant du type indiqué dans le nom de la commande (ex :,
Gl.Uniform3f ou
Gl.Uniform3fv peut être employé pour charger un tableau variable uniforme de type vec3). Le nombre d’éléments du tableau variable uniforme à modifier est spécifié par
count
Les commandes
Gl.UniformMatrix{2|3|4|2x3|3x2|2x4|4x2|3x4|4x3}fv sont utilisées pour modifier une matrice ou un tableau de matrices. Les nombres dans le nom de la commande sont interprétés comme la dimension de la matrice. Le nombre
2 indique une matrice 2 × 2
(c. à d., 4 valeurs), Le nombre
3 indique une matrice 3 × 3 (c. à d., 9 valeurs), et le nombre
4 indique une matrice 4 × 4 (c. à d., 16 valeurs). La dimension des matrices qui ne sont pas carrées est explicite, avec unun premier nombre représentant le nombre de colonnes et un second le nombre de rangées. Par exemple,
2x4 indique une matrice avec 2 colonnes et 4 rangées (c. à d., 8 valeurs).
Si
transpose est Gl.FALSE, chaque matrice est supposée être fournie d’ans l’ordre de la colonne principale. Si
transpose est
Gl.TRUE, chaque matrice est supposée fournie dans l’ordre de la rangée principale. L’argument
count indique le nombre de matrices à transmettre. Un compte de 1 peut être utilisé pour modifier la valeur d’une seule matrice, et un compte plus grand, pour modifier un tableau de matrices.
Notes
Gl.Uniform1i et
Gl.Uniform1iv sont les deux seules fonctions qui peuvent être utilisées pour charger des variables uniformes définies avec le type sampler. Le chargement de samplers avec toute autre fonction génèrera une erreur
Gl.INVALID_OPERATION.
Si
count est supérieur à 1 que la variable uniforme indiquée n’est pas un tableau, une erreur Gl.INVALID_OPERATION se produit et la variable uniforme spécifiée reste inchangée.
Outre les exceptions précédentes, si le type et la taille de la variable uniforme comme définis dans le shader ne concordent pas avec le type et la taille spécifiés dans le nom de la commande utilisée pour charger sa valeur, une erreur Gl.INVALID_OPERATION sera générée et la variable uniforme
spécifiée restera inchangée.
Si
location est une valeur différente de -1 et qu’elle ne représente pas un emplacement de variable uniforme dans l’ objet programme en cours, une erreur sera générée, et aucun changement ne sera fait à l’enregistrement de la variable uniforme de l’objet programme en cours. Si
location est égal à -1, les données passées seront silencieusement ignorées et
la variable uniforme spécifiée restera inchangée.
Erreurs
Gl.INVALID_OPERATION est générée s'il n'y a pas d'objet programme
courant.
Gl.INVALID_OPERATION est générée si la taille de la variable uniforme déclarée dans le shader ne concorde pas avec la taille indiquée par la commande
Gl.Uniform
.
Gl.INVALID_OPERATION est générée si l’un des entiers variants
Signés ou non signés de cette fonction est utilisé pour charger une variable uniforme de type float, vec2, vec3, vec4, ou un tableau de ceux-ci, ou si l’un des variants flottants de cette fonction est utilisé pour charger une variable uniforme de type int, ivec2, ivec3,
ivec4, unsigned int, uvec2, uvec3,
uvec4, ou un tableau de ceux-ci.
Gl.INVALID_OPERATION est générée si l’un des variants entier signé de cette fonction est utilisé pour charger une variable uniforme de type unsigned int, uvec2, uvec3,
uvec4, ou un tableau de ceux-ci.
Gl.INVALID_OPERATION est générée si l’un des variants entier non signé de cette fonction est utilisé pour charger une variable uniforme de type int, ivec2, ivec3,
ivec4, ou un tableau de ceux-ci.
Gl.INVALID_OPERATION est générée si
location est un emplacement uniforme invalide pour l’objet programme en cours et si
location n’est pas égal à -1.
Gl.INVALID_VALUE est générée si
count est inférieur à 0.
Gl.INVALID_OPERATION est générée si
count est supérieur à 1 si la variable uniforme n’est pas une variable tableau array.
Gl.INVALID_OPERATION est générée si un sampler est chargé en utilisant une commande autre que
Gl.Uniform1i et
Gl.Uniform1iv.
Gets Associés
Gl.Get avec l’argument Gl.CURRENT_PROGRAM
Gl.GetActiveUniform avec le handle d’un objet programme et l’indice d’une variable uniforme active.
Gl.GetUniform avec le handle d’un objet programme et l’emplacement d’une variable uniforme.
Gl.GetUniformLocation avec le handle d’un objet programme et le nom d’une variable uniforme.
Voir aussi
Voir documentation originale sur le site web OpenGL