WebGL: en passant uniforme des tableaux de shader

Essayé de faire comme ici: Tableau passe de shader
Et comme ici: Le passage d'un tableau de vecteurs d'un uniforme

Mais toujours pas de chance. Je pense que je fais tout comme il y en a mais ça ne fonctionne pas:

Voici mon code JavaScript:

shaderProgram.lightsUniform = gl.getUniformLocation(shaderProgram, "lights"); //Getting location
gl.uniform1f(shaderProgram.lightsUniform, new Float32Array([3,1,2,3,4,5])); //Let's try to send some light (currently each light is one float) as array.

Vertex Shader Code:

uniform float lights[6]; //Declaration

...

vLight *= lights[0]; //Let's try to mutliply our light by the first array item. There should be 3.0.

Résumé: j'envoie un tableau de shader avec les non-nulle de flotteurs.

Résultat: totalement noir! I. e. lumières[0] contient 0.0 mais attendu 3.0. Si j'essaie de lumières[1], des lumières[2] etc. ils donnent tous le même résultat!

Nous allons maintenant essayer de passer juste un flotteur. - Je changer

gl.uniform1f(shaderProgram.lightsUniform, new Float32Array([3,1,2,3,4,5])); 

à

gl.uniform1f(shaderProgram.lightsUniform, 3); //I want to send just float 3.0

Résumé: au lieu d'envoyer un tableau j'envoie juste flotter 3.0.

Résultat: fonctionne! lumières[0] contient 3.0 (mais j'ai envoyé juste flotter, pas un tableau).

Que dois-je faire de mal? Comment puis-je passer à shader tableau des uniformes?

OriginalL'auteur Dmitry | 2013-07-26