均一な配列を介してシェーダーにライトとライトカラーの情報を渡そうとしています。これらをシェーダーで次のように宣言しました。
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");
この場合、amount は 4 です。
OpenGL ES デバッガー (PerfHud ES) をチェックすると、配列の値が 1.4e+02 のようにほぼランダムであることがわかります。
私は何か間違ったことをしていますか?または、この場合属性を使用する必要がありますか?