AndroidでのOpenGLES2プログラミングは初めてですが、ShaderプログラムでJavaクラスを属性/ユニフォームにマップする方法を考えていました。シェーダーで「ライト」と呼ばれる構造を定義したと言います。
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プログラムにマッピングすることは可能ですか?