0
私はAndroidでOpenGLES2プログラミングの初心者です.ShaderプログラムのJavaクラスを属性/制服にマッピングする方法が不思議でした。 セイは私のシェーダで、私は「光」と呼ばれる構造を定義している:私は次のように同じ構造を反映したJavaクラスを記述する場合Android/OpenGLES2: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];
をそして:
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;
}
は光にのインスタンスをマッピングすることが可能ですシェイダープログラム?
均一なバッファであっても、Javaの愚かな動的割り当て配列では破損しますが、もちろん+1になります。 –