--- title: WebGLRenderingContext.getUniformLocation() slug: Web/API/WebGLRenderingContext/getUniformLocation tags: - API - Méthode - Reference - Uniform Variables - Uniforms - Variables - Variables en WebGL - WebGL - WebGLRenderingContext - getUniformLocation translation_of: Web/API/WebGLRenderingContext/getUniformLocation ---
getUniformLocation()
retourne l'emplacement d'une variable uniform particulière appartenant au {{domxref ("WebGLProgram")}} indiqué. La variable uniform est retournée sous la forme d'un objet {{domxref("WebGLUniformLocation")}}, qui est un identificateur opaque utilisé pour indiquer où se trouve la variable uniform dans la mémoire de la GPU.
L'uniform lui-même est déclaré dans le programme shader en utilisant GLSL.
WebGLUniformLocation = WebGLRenderingContext.getUniformLocation(programme, nom);
programme
nom
"gl_"
, du fait que ceux-ci sont internes à la couche WebGL.Une valeur {{domxref ("WebGLUniformLocation")}} indiquant l'emplacement de la variable nommée, si elle existe. Si la variable indiquée n'existe pas, {{jsxref("null")}} est retourné à la place.
WebGLUniformLocation
est une valeur opaque utilisée pour identifier de manière unique l'emplacement dans la mémoire de la GPU auquel se trouve la variable uniform. Avec cette valeur en main, vous pouvez appeler d'autres méthodes WebGL pour accéder à la valeur de la variable uniform.
Le type WebGLUniformLocation
est compatible avec le type GLint
pour indiquer l'indice ou l'emplacement d'un attribut uniform.
Les erreurs suivantes peuvent se produire ; pour vérifier les erreurs après le retour de getUniformLocation(), appelez {{domxref ("WebGLRenderingContext.getError", "getError()")}}.
programme
n'est pas une valeur ou un objet généré par WebGL.programme
ne correspond pas à un programme GLSL généré par WebGL, ou le programme indiqué n'a pas été lié avec succès.Dans cet exemple, extrait de la méthode animateScene()
dans l'article Un exemple d'animation 2D WebGL de base, retrouve les emplacements de trois uniforms du programme d'ombrage, puis définit la valeur de chacun des trois uniforms.
gl.useProgram(programmeShader); uScalingFactor = gl.getUniformLocation(programmeShader, "uScalingFactor"); uGlobalColor = gl.getUniformLocation(programmeShader, "uGlobalColor"); uRotationVector = gl.getUniformLocation(programmeShader, "uRotationVector") gl.uniform2fv(uScalingFactor, currentScale); gl.uniform2fv(uRotationVector, currentRotation); gl.uniform4fv(uGlobalColor, [0.1, 0.7, 0.2, 1.0]);
Après avoir défini le programme d'ombrage en cours comme programmeShader
, ce code récupère les trois uniforms "uScalingFactor"
, "uGlobalColor"
et "uRotationVector"
, en appelant getUniformLocation()
une fois pour chaque uniform.
Ensuite, les valeurs des trois uniforms sont définies :
uScalingFactor
- un sommet à 2 composantes - reçoit les facteurs d'échelle horizontale et verticale à partir de la variable currentScale
.uRotationVector
reçoit le contenu de la variable currentRotation
. C'est également un sommet à deux composantes.uGlobalColor
reçoit la couleur [0.1, 0.7, 0.2, 1.0]
, les composants de ce vecteur à quatre composants représentant respectivement les valeurs rouge, vert, bleu et alpha.Cela fait, la prochaine fois que les fonctions d'ombrage seront appelées, leurs propres variables nommées uScalingFactor
, uGlobalColor
et uRotationVector
auront toutes les valeurs fournies par le code JavaScript.
Spécification | Statut | Commentaire |
---|---|---|
{{SpecName('WebGL', "#5.14.10", "getUniformLocation")}} | {{Spec2('WebGL')}} |
Définition initiale. |
{{SpecName('OpenGL ES 2.0', "glGetUniformLocation.xml", "glGetUniformLocation")}} | {{Spec2('OpenGL ES 2.0')}} | Page man de l’API OpenGL. |
Le tableau de compatibilité de cette page est généré à partir de données structurées. Si vous souhaitez contribuer aux données, merci de regarder https://github.com/mdn/browser-compat-data et envoyez-nous une pull request.
{{Compat("api.WebGLRenderingContext.getUniformLocation")}}