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 |
この命令は、次の処理を行います。
- 次の命令のアドレスを、リターン アドレス スタックにプッシュします。
- ラベルでマークされた命令から実行を継続します。
頂点シェーダー 2_0 では、呼び出しをネストすることはできません。
頂点シェーダー 2_x では、D3DVSHADERCAPS2_0 構造体の StaticFlowControlDepth 要素によってネストの深さが制限されます。詳細については、「GetDeviceCaps」を参照してください。
頂点シェーダー 3_0 では、呼び出しを 4 レベルまでネストすることができます。
順方向の呼び出しのみが可能です。つまり、頂点シェーダー内のラベルの場所は、それを参照する call 命令の後ろになければなりません。
loop...endloop ブロック内で call 命令が呼び出される場合は、ループ カウンター レジスタ (aL) の値にサブルーチン内でアクセスすることができます。
サブルーチンが、そのサブルーチンの外部にあるループ カウンター レジスタ (aL) を参照している場合は、このサブルーチンを呼び出すすべてのインスタンスを loop...endloop ブロックで囲む必要があります。