我是Android上的OpenGLES2编程的新手。我想知道如何在Shader程序中将Java类映射到属性/制服。 在我的着色器中说我定义了一个名为“light”的结构:
struct light {
vec4 position;
vec4 ambient_color;
vec4 diffuse_color;
vec4 specular_color;
vec3 spot_direction;
vec3 attenuation_factors;
float spot_exponent;
float spot_cutoff_angle;
bool compute_distance_attenuation;
};
uniform light light_state[8];
如果我编写一个反映相同结构的Java类:
public class Light{
public float[] position=new float[4];
public float[] ambient=new float[4];
public float[] diffuse=new float[4];
public float[] specular=new float[4];
public float[] spotDirection=new float[3];
public float[] attenFactors=new float[3];
public float spotExponent;
public float spotCutoffAngle;
public boolean computeDA;
}
是否可以将Light的实例映射到Shader程序?
答案 0 :(得分:2)
不,我认为不可能,你必须单独上传这些值。常规OpenGL有一个统一缓冲区对象的概念,可能与你想要的类似,但我没有在GLES API中看到它们。