次の方法で共有


call - vs

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

構文

呼び出し l#

 

ここで、l# は ラベル であり、呼び出されるサブルーチンの先頭をマークします。

解説

頂点シェーダーのバージョン 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 レベルの呼び出しの入れ子が許可されます。

転送呼び出しのみが許可されます。 つまり、頂点シェーダー内のラベルの位置は、それを参照する呼び出し命令の後に配置する必要があります。

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

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

頂点シェーダーの手順