tyu*_*uip 10 iphone shader opengl-es opengl-es-lighting
我想尝试一下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;
};
Run Code Online (Sandbox Code Playgroud)
他们还根据这些结构制作了两件制服.
uniform material_properties u_material_properties;
uniform directional_light u_directional_light;
Run Code Online (Sandbox Code Playgroud)
问题是,我不知道如何将自己的结构传递给实际的着色器.
我想在我的主代码中创建相同的结构,并将对象传递到着色器.这怎么可能?
关心尼克拉斯
Mat*_*gro 11
你不能,OpenGL ES没有那个功能,上传你必须得到每个嵌套变量的位置,并在每个嵌套变量上调用glUniform*.
例如:
GLuint loc = glGetUniformLocation(program, "u_material_properties.ambient_color");
glUniform4f(loc, 1.0, 1.0, 1.0, 0.0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6531 次 |
| 最近记录: |