call - vs
指定されたラベルでマークされた命令の関数呼び出しを実行します。
構文
呼び出し l# |
---|
ここで、l# は ラベル であり、呼び出されるサブルーチンの先頭をマークします。
解説
頂点シェーダーのバージョン | 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 レベルの呼び出しの入れ子が許可されます。
転送呼び出しのみが許可されます。 つまり、頂点シェーダー内のラベルの位置は、それを参照する呼び出し命令の後に配置する必要があります。
呼び出し命令が ループ内で呼び出された場合...endloop ブロックでは、 ループ カウンター レジスタ (aL) の値にサブルーチン内でアクセスできます。
サブルーチンがサブルーチンの外部にある ループ カウンター レジスタ (aL) を参照している場合、このサブルーチンへの呼び出しのすべてのインスタンスを ループで囲む必要があります。..endloop ブロック。
関連トピック