में अपनी संरचना पास करना मैं ओपनजीएल ईएस 2.0 प्रोग्रामिंग गाइड पुस्तक से एक प्रकाश उदाहरण का प्रयास करना चाहता हूं। शेडर में उन्होंने दो संरचनाएं की हैं।ओपनजीएल एएस 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;
समस्या यह है कि, मुझे नहीं पता कि वास्तविक शेडर में अपनी संरचनाओं को कैसे पारित किया जाए।
मैं अपने मुख्य कोड में समान संरचनाएं बनाना चाहता हूं और वस्तुओं को शेडर में पास करना चाहता हूं। यह कैसे संभव है?
सादर Niclas
क्या आप जानते हैं कि कैसे मैं चर में पास? आइए कहें कि मेरे शेडर में एक vec3 है: u_directional_light.direction। मैं एक GLfloat सरणी में पास करने की कोशिश कर रहा हूं लेकिन यह काम नहीं कर रहा है। वर्दी [UNIFORM_DIRECTIONAL_LIGHT_DIRECTION] = glGetUniformLocation (प्रोग्राम, "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
इसके लिए आपको glUniform3fv का उपयोग करने की आवश्यकता है। और vec4 के लिए glUniform4fv, आदि –
धन्यवाद मैटिया – tyuip