는 각 기본 유형의 위치를 받아야합니다. 당신의 예에서
struct LightInfo {
vec4 Position; // Light position in eye coords.
vec3 La; // Ambient light intensity
vec3 Ld; // Diffuse light intensity
vec3 Ls; // Specular light intensity
};
uniform LightInfo Light;
는 배열이있는 경우 당신은 당신이
struct LightInfo {
vec4 Position; // Light position in eye coords.
vec3 La; // Ambient light intensity
vec3 Ld; // Diffuse light intensity
vec3 Ls; // Specular light intensity
};
uniform LightInfo Lights[2];
// ---
var light0PosLoc = gl.getUniformLocation(program, "Lights[0].Position");
var light0LaLoc = gl.getUniformLocation(program, "Lights[0].La");
var light0LdLoc = gl.getUniformLocation(program, "Lights[0].Ld");
var light0LsLoc = gl.getUniformLocation(program, "Lights[0].Ls");
var light1PosLoc = gl.getUniformLocation(program, "Lights[1].Position");
var light1LaLoc = gl.getUniformLocation(program, "Lights[1].La");
var light1LdLoc = gl.getUniformLocation(program, "Lights[1].Ld");
var light1LsLoc = gl.getUniformLocation(program, "Lights[1].Ls");
의 각 배열의 각 필드의 위치를 필요할 것
var lightPosLoc = gl.getUniformLocation(program, "Light.Position");
var lightLaLoc = gl.getUniformLocation(program, "Light.La");
var lightLdLoc = gl.getUniformLocation(program, "Light.Ld");
var lightLsLoc = gl.getUniformLocation(program, "Light.Ls");
필요 의미 등을 배열의 배열
struct LightInfo {
vec4 Positions[2]; // Light positions in eye coords.
vec3 La; // Ambient light intensity
vec3 Ld; // Diffuse light intensity
vec3 Ls; // Specular light intensity
};
uniform LightInfo Lights[2];
// ---
var light0Pos0Loc = gl.getUniformLocation(program, "Lights[0].Positions[0]");
var light0Pos1Loc = gl.getUniformLocation(program, "Lights[0].Positions[1]");
var light0LaLoc = gl.getUniformLocation(program, "Lights[0].La");
var light0LdLoc = gl.getUniformLocation(program, "Lights[0].Ld");
var light0LsLoc = gl.getUniformLocation(program, "Lights[0].Ls");
var light1Pos0Loc = gl.getUniformLocation(program, "Lights[1].Positions[0]");
var light1Pos1Loc = gl.getUniformLocation(program, "Lights[1].Positions[1]");
var light1LaLoc = gl.getUniformLocation(program, "Lights[1].La");
var light1LdLoc = gl.getUniformLocation(program, "Lights[1].Ld");
var light1LsLoc = gl.getUniformLocation(program, "Lights[1].Ls");
등 ...
가능한 가장 좋은 설명입니다. 고맙습니다. – pjercic