次の方法で共有


D3DHAL_DP2VERTEXSHADER構造体 (d3dhal.h)

DirectX 8.0 以降のバージョンのみ。

D3DHAL_DP2VERTEXSHADER構造体は、D3dDrawPrimitives2 によって受け取ったオペコード (D3DDP2OP_SETVERTEXSHADERまたはD3DDP2OP_DELETEVERTEXSHADER) に応じて、現在の頂点シェーダー設定するか、頂点シェーダーを削除します。

構文

typedef struct _D3DHAL_DP2VERTEXSHADER {
  DWORD dwHandle;
} D3DHAL_DP2VERTEXSHADER;

メンバーズ

dwHandle

ディスプレイへのハンドル。

備考

DirectX 8.0 レベルのすべてのドライバーは、プログラム可能な頂点処理をサポートしていない場合でも送信されるため、D3DDP2OP_SETVERTEXSHADER トークンをサポートする必要があります。 ただし、その場合、シェーダー ハンドルは常に、頂点データの固定関数処理を示す FVF コードです。 ドライバーは、ストリーム 0 の頂点データの形式として、dwHandle メンバーに格納されている FVF コードを使用する必要があります。 プログラム可能な頂点処理をサポートするドライバーは、ハンドルを調べて、以前に D3DDP2OP_CREATEVERTEXSHADER または FVF コードで作成されたシェーダーを参照しているかどうかを判断し、適切なアクションを実行する必要があります。

ピクセル シェーダーと頂点シェーダーは直交です。 したがって、レガシ FVF コードが現在の頂点シェーダーとして選択されている場合、これは従来のピクセル処理を意味しません。 ピクセル処理をサブプログラミング モードにリセットするには、現在のピクセル シェーダーも 0 に設定する必要があります。 頂点シェーダーが FVF コードに設定されている場合は、頂点処理状態を固定関数モードにリセットし、ピクセル処理状態にリセットしないようにドライバーで注意する必要があります。

固定関数の頂点処理からプログラミング可能な頂点処理に切り替える場合は、従来のレンダリング状態とマトリックスの値を保持する必要があります。 プログラム可能から固定関数への切り替えが発生した場合 (ドライバーは FVF を持つD3DDP2OP_SETVERTEXSHADERをシェーダー ハンドルとして受け取ります)、その保持状態を復元する必要があります。

プログラム可能なシェーダーを切り替える場合、そのシェーダーの定義で指定された値を持つ定数レジスタは、その値に設定する必要があります。 他のすべての定数レジスタの値は変更されません。

D3DDP2OP_SETVERTEXSHADERDECL操作の場合、ランタイムは、dwHandle メンバーにレガシ FVF コードまたは DirectX 9.0 宣言ハンドルを指定します。 ランタイムは、ハンドルのビット 0 を設定することによって DirectX 9.0 宣言ハンドルを示します。 D3DDP2OP_SETVERTEXSHADERFUNC操作の場合、ランタイムは dwHandle を 0 に設定して、固定関数パイプラインを示します。

必要条件

要件 価値
ヘッダー d3dhal.h (D3dhal.h を含む)

関連項目

D3DDP2OP_CREATEVERTEXSHADER

D3DDP2OP_DELETEVERTEXSHADER

D3DDP2OP_DELETEVERTEXSHADERDECL

D3DDP2OP_DELETEVERTEXSHADERFUNC

D3DDP2OP_SETSTREAMSOURCE

D3DDP2OP_SETSTREAMSOURCEUM

D3DDP2OP_SETVERTEXSHADER

D3DDP2OP_SETVERTEXSHADERDECL

D3DDP2OP_SETVERTEXSHADERFUNC

D3DHAL_DP2CREATEVERTEXSHADER

D3DHAL_DP2SETVERTEXSHADERCONST

D3dDrawPrimitives2