0

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プログラムにマッピングすることは可能ですか?

4

1 に答える 1

2

いいえ、それは不可能だと思います。値を個別にアップロードする必要があります。通常の OpenGL には、あなたが望むものに似ているかもしれないユニフォーム バッファ オブジェクトの概念がありますが、GLES api でそれらについて言及されていません。

于 2012-05-11T04:58:57.917 に答える