例如。在FragmentShader中: -
struct LightSource
{
int Type;
vec3 Position;
vec3 Attenuation;
vec3 Direction;
vec3 Color;
};
uniform LightSource Light[4];
main(){
//somecode
}
现在我如何发送Light[4]
的值。
您需要为每个数组元素获取结构的每个字段的位置,并分别发送值。请参阅OpenGL wiki页面以供参考:https://www.khronos.org/opengl/wiki/Uniform_(GLSL)#Uniform_management。
例如,要设置Light [0] .Type的值,您将执行以下操作:
GLuint loc = glGetUniformLocation(shader_program_id, "Light[0].Type");
glUniform1i(loc, value);