Je veux essayer un exemple d'éclairage à partir du guide de programmation OpenGL ES 2.0. Dans le shader, ils ont fait deux structures.Transmettre sa propre structure en opengl es 2.0 shader
struct directional_light
{
vec3 direction; // normalized light direction in eye space
vec3 halfplane; // normalized half-plane vector
vec4 ambient_color;
vec4 diffuse_color;
vec4 specular_color;
};
struct material_properties
{
vec4 ambient_color;
vec4 diffuse_color;
vec4 specular_color;
float specular_exponent;
};
Ils ont également réalisé deux uniformes basés sur ces structures.
uniform material_properties u_material_properties;
uniform directional_light u_directional_light;
Le problème est, je ne sais pas comment passer des structures propres dans le shader réel. Je veux créer les mêmes structures dans mon code principal et passer les objets dans le shader. Comment est-ce possible?
Cordialement Niclas
Savez-vous comment je passe dans les variables? Disons que j'ai un vec3 dans mon shader: u_directional_light.direction. J'essaie de passer dans un tableau GLfloat mais cela ne semble pas fonctionner. uniformes [UNIFORM_DIRECTIONAL_LIGHT_DIRECTION] = glGetUniformLocation (programme, "u_directional_light.direction"); GLfloat na_ambient_color [] = {0.0,1.0,0.0}; glUniform1fv (UNIFORM_DIRECTIONAL_LIGHT_DIRECTION, 1, (GLfloat *) na_ambient_color); – tyuip
Vous devez utiliser glUniform3fv pour cela. Et glUniform4fv pour vec4, etc. –
Merci Matias – tyuip