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 に設定して、固定関数パイプラインを示します。
要件
要件 | 値 |
---|---|
Header | d3dhal.h (D3dhal.h を含む) |
こちらもご覧ください
D3DDP2OP_CREATEVERTEXSHADER
D3DDP2OP_DELETEVERTEXSHADER
D3DDP2OP_DELETEVERTEXSHADERDECL
D3DDP2OP_DELETEVERTEXSHADERFUNC
D3DDP2OP_SETSTREAMSOURCE
D3DDP2OP_SETSTREAMSOURCEUM
D3DDP2OP_SETVERTEXSHADER
D3DDP2OP_SETVERTEXSHADERDECL
D3DDP2OP_SETVERTEXSHADERFUNC