このメンバーを含む cbuffer を持つ頂点シェーダーがあります。
float4 myArray[16];
シェーダーの本体では、変数インデックスを使用して配列値を読み取って使用できます。
float4 anElement = myArray[(int)(input.Color.g * 255)];
これはうまくコンパイルされます。ただし、配列に 256 個の要素があると宣言すると、次のようになります。
float4 myArray[256];
その後、コンパイラは次のエラーで失敗します。
エラー X4507: 最大 vs_4_0_level_9_1 定数レジスタ インデックス (256) を超えました - コンパイルに失敗した参照定数の数を減らしてみてください。コードは生成されません
myArray に定数インデックスを使用すると、このエラーは発生しません。MSDN にはエラー 4507 に関するドキュメントがありません。255 要素を超える長さの配列に動的にインデックスを付けることはできますか? これは DirectX9 キャップですか?
シェーダー モデル 4.0 レベル 9_1 を使用しています。