我正在尝试通过统一数组将光和浅色信息传递给我的着色器。我在我的着色器中声明了这些:
uniform vec2 lightpositions[4];
uniform vec4 lightcolors[4];
在我的代码(C++)中:
float lightpositions[8] = {
150, 150,
(float) screenWidth - 150, 150,
(float) screenWidth - 150, (float) screenHeight - 150,
150, (float) screenHeight - 150
};
float lightcolors[16] = {
1.0, 0.0, 0.0, 1.0,
1.0, 1.0, 0.0, 1.0,
1.0, 0.0, 1.0, 1.0,
0.0, 1.0, 1.0, 1.0
};
glUniform2fv(lightposHandle, amount, lightpositions);
checkGlError("lightPositions");
glUniform4fv(lightcolorHandle, amount, lightcolors);
checkGlError("lightColors");
在这种情况下,金额为 4。
当我检查我的 OpenGL ES 调试器(PerfHud ES)时,我发现数组中的值几乎是随机的,例如 1.4e+02。
难道我做错了什么?还是在这种情况下我应该使用属性?