균일 한 배열을 통해 쉐이더에 밝은 색 및 밝은 색 정보를 전달하려고합니다.GLSL 균일 배열이 잘못된 값
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와 거의 비슷하다는 것을 알 수 있습니다.
내가 잘못 했나요? 이 경우 속성을 사용해야합니까?
나머지 코드는 무엇입니까? 'glUniform ... '을 호출 할 때 프로그램이 사용 중입니까? 유니폼 위치는 적당한 값을 가지고 있는가? (주의 :'-1'의 균일 한 위치는'glUniform'가 에러를 발생시키지 않도록 *이 경우에는 단지 no-op입니다.)? –
"* 배열의 값이 1.4e + 02 *와 같이 거의 무작위임을 알 수 있습니다."이것은 무작위가 아닙니다. 1.4e + 02는 단지 140에 대한 과학적 표기법입니다. –
@ NicolBolas이 숫자가 나에게 아무런 의미도없고 패턴을 포함하지 않는다는 의미에서 무작위를 의미했습니다. 여기에 내 그림 코드가 있습니다 : [link] (http://pastebin.com/5c5Rzbwk) –