Question

Je veux essayer un exemple d'éclairage du livre OpenGL ES 2.0 Guide de programmation. Dans le shader ils ont fait deux structures.

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 fait deux uniformes, à partir de ces structures.

uniform  material_properties u_material_properties;   
uniform directional_light u_directional_light;

Le problème est, je ne sais pas comment passer propres structures dans le shader réelle.

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

Était-ce utile?

La solution

Vous ne pouvez pas, OpenGL ES ne pas cette fonctionnalité, vous devez télécharger pour obtenir l'emplacement de chacune de vos variables imbriquées et appel glUniform * sur chacun d'eux.

Par exemple:

GLuint loc = glGetUniformLocation(program, "u_material_properties.ambient_color");
glUniform4f(loc, 1.0, 1.0, 1.0, 0.0);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top