سؤال

أريد أن أجرب مثالًا للإضاءة من دليل برمجة OpenGL ES 2.0. في التظليل ، صنعوا هيكلين.

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

لقد صنعوا أيضًا زيتين ، بناءً على هذه الهياكل.

uniform  material_properties u_material_properties;   
uniform directional_light u_directional_light;

المشكلة هي أنني لا أعرف كيفية تمرير الهياكل الخاصة إلى التظليل الفعلي.

أرغب في إنشاء نفس الهياكل في الكود الرئيسي الخاص بي وتمرير الكائنات إلى التظليل. كيف يكون هذا ممكنا؟

تحياتي نيكلاس

هل كانت مفيدة؟

المحلول

لا يمكنك ، لا تملك OpenGL ES هذه الوظيفة ، لتحميل ، يجب عليك الحصول على موقع كل من المتغيرات المتداخلة الخاصة بك واستدعاء gluniform* على كل منها.

فمثلا:

GLuint loc = glGetUniformLocation(program, "u_material_properties.ambient_color");
glUniform4f(loc, 1.0, 1.0, 1.0, 0.0);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top