次の方法で共有


call - vs

指定したラベルでマークされた命令への関数呼び出しを実行します。

構文

call l#

ここで、l# は呼び出されるサブルーチンの開始をマークする label - vs です。

解説 

頂点シェーダーのバージョン 1_1 2_0 2_x 2_sw 3_0 3_sw
call x x x x x

この命令は、次の処理を行います。

  1. 次の命令のアドレスを、リターン アドレス スタックにプッシュします。
  2. ラベルでマークされた命令から実行を継続します。

頂点シェーダー 2_0 では、呼び出しをネストすることはできません。

頂点シェーダー 2_x では、D3DVSHADERCAPS2_0 構造体の StaticFlowControlDepth 要素によってネストの深さが制限されます。詳細については、「GetDeviceCaps」を参照してください。

頂点シェーダー 3_0 では、呼び出しを 4 レベルまでネストすることができます。

順方向の呼び出しのみが可能です。つまり、頂点シェーダー内のラベルの場所は、それを参照する call 命令の後ろになければなりません。

loop...endloop ブロック内で call 命令が呼び出される場合は、ループ カウンター レジスタ (aL) の値にサブルーチン内でアクセスすることができます。

サブルーチンが、そのサブルーチンの外部にあるループ カウンター レジスタ (aL) を参照している場合は、このサブルーチンを呼び出すすべてのインスタンスを loop...endloop ブロックで囲む必要があります。