0

メイン コード (Android) とシェーダーの両方で使用している定数があります。

// Main code
private static final int XSIZE=16;
private float[] sinusoida = new float[XSIZE];

// shader
const int XSIZE = 16;
uniform float u_SinArray[XSIZE];

両方の定数は同じものを参照するため、それらを共有し、最初の定数を変更すると自動的に変更されるようにするのが最適であることは明らかです。それは可能ですか?

4

1 に答える 1

1

Java コードとシェーダー コードが文字通り同じ変数にアクセスできるかどうかを尋ねる場合は、いいえ。特に、コンパイル済みのシェーダーを使用している場合、答えはノーです。Java コードでシェーダーをコンパイルする場合は、Java 定数を使用してシェーダー スクリプトを作成するだけです (ただし、そうしているようには見えません)。別の方法として、定数を使用する代わりに別のユニフォームをシェーダーに渡すこともできます。シェーダーのユニフォームの最大数を超えないと仮定すると、おそらくこれが最も安全な方法です。

編集: 将来の読者には、統一された提案を気にしないでください。Uniforms は、実行中は暗黙的に一定ですが、配列宣言に必要なコンパイル時にはそうではありません。

于 2013-09-06T03:16:56.630 に答える