9.4.1 Passer des tableaux de vecteurs

Passer un tableau de vecteurs de float à une dimension (enfin des scalaires quoi) :

1
void glUniform1fv(GLint location,  GLsizei count,  const GLfloat *value);

Passer un tableau de vecteurs de float à deux dimensions :

1
void glUniform2fv(GLint location,  GLsizei count,  const GLfloat *value);

Passer un tableau de vecteurs de float à trois dimensions :

1
void glUniform3fv(GLint location,  GLsizei count,  const GLfloat *value);

Passer un tableau de vecteurs de float à quatre dimensions :

1
void glUniform4fv(GLint location,  GLsizei count,  const GLfloat *value);

Passer un tableau de vecteurs de int à une dimension :

1
void glUniform1iv(GLint location,  GLsizei count,  const GLint *value);

Passer un tableau de vecteurs de int à deux dimensions :

1
void glUniform2iv(GLint location,  GLsizei count,  const GLint *value);

Passer un tableau de vecteurs de int à trois dimensions :

1
void glUniform3iv(GLint location,  GLsizei count,  const GLint *value);

Passer un tableau de vecteurs de int à quatre dimensions :

1
void glUniform4iv(GLint location,  GLsizei count,  const GLint *value);

Utilisation des paramètres :

  • location : identifiant de la variable à modifier dans le shader
  • count : nombre d'éléments du tableau
  • value : tableau de valeurs

La chose à bien retenir sur les tableaux de vecteurs dans OpenGl 3 est que les différentes composantes des vecteurs se suivent dans le tableau de valeurs.

En gros ça donne quelque chose comme ça :

1
float values = {u1, u2, u3, v1, v2, v3, w1, w2, w3, ...};