Quiero probar un ejemplo de iluminación del libro OpenGL ES 2.0 Programming Guide. En el sombreado han creado dos estructuras.Pasando own struct into 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;
};
También han hecho dos uniformes, sobre la base de estas estructuras.
uniform material_properties u_material_properties;
uniform directional_light u_directional_light;
El problema es que no sé cómo pasar estructuras propias al sombreador real.
Quiero crear las mismas estructuras en mi código principal y pasar los objetos al sombreador. ¿Cómo es esto posible?
Saludos Niclas
¿Sabe cómo me pase en las variables? Digamos que tengo un vec3 en mi shader: u_directional_light.direction. Estoy tratando de pasar una matriz GLfloat pero parece que no funciona. uniformes [UNIFORM_DIRECTIONAL_LIGHT_DIRECTION] = glGetUniformLocation (programa, "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
Necesita usar glUniform3fv para eso. Y glUniform4fv para vec4's, etc. –
Gracias Matias – tyuip