Frage

Ich möchte ein Licht Beispiel aus dem Buch OpenGL ES 2.0 Programming Guide versuchen. Im Shader sie haben zwei Strukturen gemacht.

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;
};

Sie haben auch zwei Uniformen gemacht, auf der Grundlage dieser Strukturen.

uniform  material_properties u_material_properties;   
uniform directional_light u_directional_light;

Das Problem ist, ich weiß nicht, wie eigene Strukturen in den eigentlichen Shader passieren.

Ich mag die gleichen Strukturen in meinem Haupt-Code erstellen und die Objekte in den Shader übergeben. Wie ist das möglich?

Viele Grüße Niclas

War es hilfreich?

Lösung

Sie können nicht, nicht OpenGL ES nicht, dass die Funktionalität haben, laden Sie sich die Position jedes Ihrer verschachtelten Variablen und Call glUniform bekommen haben * auf jeden von ihnen.

Zum Beispiel:

GLuint loc = glGetUniformLocation(program, "u_material_properties.ambient_color");
glUniform4f(loc, 1.0, 1.0, 1.0, 0.0);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top