簡體   English   中英

將自己的結構傳遞給opengl es 2.0着色器

[英]Passing own struct into opengl es 2.0 shader

我想嘗試一下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 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM