これが私の最初の投稿です、と私はごく最近のAndroidおよびOpenGLのプログラミングを開始しましたので、私にはいいです:)配列インデックス
私は1つの画面が含まれます小さなアプリケーションを書いています色の迅速な変更のためにパレタイズされた画像を使用します。スピードに関しては、シェーダを使ってシステムを実装できると思ったので、Open GL ES 2.0プログラミングガイドの素晴らしい例を使ってシェーダを起動しています。私が過去数日間頭を悩ませていた問題は、シェーダ内のパレットデータを参照する方法が登場しています。
私のシェーダが現在ある:
precision lowp float;
varying vec2 v_texCoord;
uniform sampler2D s_texture;
uniform int s_palette[204]; // Specify a palette of 64 rgb entries
void main()
{
vec4 col = texture2D(s_texture, v_texCoord);
int index = (int(col.r * 255.0) * 3;
gl_FragColor = vec4(float(s_palette[index])/255.0, float(s_palette[index+1])/255.0, float(s_palette[index+2])/255.0, 1.0);
}
年齢のためにこれで遊んで、非常に遠くに私は一定の値で、私のパレットデータを参照する場合、私は結果を得ることができることを発見し、ではなく、参照することで得ていない後変数を使ってGoogleでしばらく検索したところ、これはGLSL 1.1とまったく同じ方法であり、GLSL 1.3で修正されたことがわかりました。私はAndroidがGLSL 1.3に基づいたGLSL ES1.0上で動作していると信じていますので、うまくいくはずです。私はGLSLESの仕様で何も見つけられませんが、それはどちらも不可能であると示唆しています。どこが間違っていますか?
単純にできないのであれば、私の計画でこのやや欠点を乗り越える方法は他にもありますか?
ありがとうございます。魅力のように働いた。 :) – Teknogrebo