例えば。 FragmentShaderで:-
struct LightSource
{
int Type;
vec3 Position;
vec3 Attenuation;
vec3 Direction;
vec3 Color;
};
uniform LightSource Light[4];
main(){
//somecode
}
Light[4]
の値を送信するにはどうすればよいですか。
各配列要素の構造体の各フィールドの場所を取得し、値を個別に送信する必要があります。参考のためにOpenGLwikiページを参照してください: 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);