Кажется, что при использовании WebGL uniform3fv
вы ДОЛЖНЫ передать массив длины, равный 3 , если ваша форма шейдера равна vec3
ИЛИ массив, имеющий длину, равную , кратную 3 если ваша шейдерная униформа является массивом vec3
.
Делаем это:
var data = new Float32Array([ 1, 2, 3, 4 ]);
gl.uniform3fv( uniformLocation, data );
когда ваша униформа объявлена как:
uniform vec3 some_uniform;
приведет к some_uniform
получению (0,0,0)
значения.
Я искал в Интернете, SO, MDN, форумах и прочем (одним из них является спецификация WebGL), и я не могу найти требование (или упомянуть) для этого ограничения.
Мой вопрос: требуется ли это согласно спецификации WebGL (и если да, не могли бы вы указать на это) или это просто какое-то недокументированное поведение, о котором вы должны знать?
Если это необходимо, мы изменим код для поддержки его как требования, если это недокументированная причуда, мы изменим код для поддержки этой причуды с возможностью отключить / удалить поддержку после того, как утечка исчезла.