D3DHAL_DRAWPRIMITIVES2DATA 構造体 (d3dhal.h)
D3DHAL_DRAWPRIMITIVES2DATA構造体には、プリミティブをレンダリングするために D3dDrawPrimitives2 関数に必要な情報が含まれています。
構文
typedef struct _D3DHAL_DRAWPRIMITIVES2DATA {
ULONG_PTR dwhContext;
DWORD dwFlags;
DWORD dwVertexType;
LPDDRAWI_DDRAWSURFACE_LCL lpDDCommands;
DWORD dwCommandOffset;
DWORD dwCommandLength;
union {
LPDDRAWI_DDRAWSURFACE_LCL lpDDVertex;
LPVOID lpVertices;
};
DWORD dwVertexOffset;
DWORD dwVertexLength;
DWORD dwReqVertexBufSize;
DWORD dwReqCommandBufSize;
LPDWORD lpdwRStates;
union {
DWORD dwVertexSize;
HRESULT ddrval;
};
DWORD dwErrorOffset;
} D3DHAL_DRAWPRIMITIVES2DATA;
メンバー
dwhContext
Direct3D デバイスのコンテキスト ハンドルを指定します。
dwFlags
ドライバーに追加の手順を提供するか、ドライバーから情報を提供するフラグを指定します。 このメンバーには、次の値のビットごとの OR を指定できます。
値 | 意味 |
---|---|
D3DHALDP2_EXECUTEBUFFER | コマンド バッファーと頂点バッファーは、システム メモリに作成されました。 ドライバーは、lpdwRStates が指す状態配列を更新する必要があります。 このフラグは Direct3D でのみ設定されます。 |
D3DHALDP2_REQCOMMANDBUFSIZE | ドライバーは、dwReqCommandBufSize で指定されているサイズ以上に現在のコマンド バッファーを増やすことができる必要があります。 コマンド バッファーのマルチバッファーをサポートしていないドライバーは、このフラグを無視できます。 このフラグは Direct3D でのみ設定されます。 |
D3DHALDP2_REQVERTEXBUFSIZE | ドライバーは、dwReqCommandBufSize で指定されたサイズ以上の頂点バッファーを割り当てることができる必要があります。 頂点バッファーのマルチバッファーをサポートしていないドライバーは、このフラグを無視できます。 このフラグは Direct3D でのみ設定されます。 |
D3DHALDP2_SWAPCOMMANDBUFFER | ドライバーは、lpDDCommands が指すバッファーを新しいコマンド バッファーに入れ替えてすぐに戻り、Direct3D が新しいコマンド バッファーを埋める間に元のバッファーを非同期的に処理できます。 コマンド バッファーのマルチバッファーをサポートしていないドライバーは、このフラグを無視できます。 このフラグは Direct3D でのみ設定されます。 |
D3DHALDP2_SWAPVERTEXBUFFER | ドライバーは、lpDDVertex または lpVertices が指すバッファーを新しい頂点バッファーと交換し、直ちに戻り、Direct3D が新しい頂点バッファーを埋める間に元のバッファーを非同期的に処理できます。 頂点バッファーのマルチバッファーをサポートしていないドライバーは、このフラグを無視できます。 このフラグは Direct3D でのみ設定されます。 |
D3DHALDP2_USERMEMVERTICES | lpVertices メンバーは有効であるため、ドライバーは lpVertices が指すユーザー割り当てメモリから頂点データを取得する必要があります。 このフラグは Direct3D でのみ設定されます。 |
D3DHALDP2_VIDMEMCOMMANDBUF | スワップ バッファーとしてドライバーによって割り当てられたコマンド バッファーがシステム メモリにありません。 このフラグは、コマンド バッファーのマルチバッファーをサポートするドライバーによって設定できます。 |
D3DHALDP2_VIDMEMVERTEXBUF | スワップ バッファーとしてドライバーによって割り当てられた頂点バッファーがシステム メモリにありません。 このフラグは、頂点バッファーのマルチバッファーをサポートするドライバーによって設定できます。 |
dwVertexType
頂点バッファー内のデータの FVF を識別します。つまり、 dwVertexType は、 lpDDVertex または lpVertices が指す頂点バッファーに存在する頂点ごとのデータ フィールドを指定します。 このメンバーは、次の表の値のビットごとの OR にすることができます。 D3DFVF_TEXx フラグの 1 つだけが設定されます。
値 | 意味 |
---|---|
D3DFVF_DIFFUSE | 各頂点には拡散色があります。 |
D3DFVF_SPECULAR | 各頂点には反射色があります。 |
D3DFVF_TEX0 | 頂点データにテクスチャ座標は提供されません。 |
D3DFVF_TEX1 | 各頂点には、テクスチャ座標のセットが 1 つ含まれています。 |
D3DFVF_TEX2 | 各頂点には、テクスチャ座標の 2 つのセットがあります。 |
D3DFVF_TEX3 | 各頂点には、テクスチャ座標の 3 つのセットがあります。 |
D3DFVF_TEX4 | 各頂点には、テクスチャ座標の 4 つのセットがあります。 |
D3DFVF_TEX5 | 各頂点には 5 セットのテクスチャ座標があります。 |
D3DFVF_TEX6 | 各頂点には 6 セットのテクスチャ座標があります。 |
D3DFVF_TEX7 | 各頂点には、7 セットのテクスチャ座標があります。 |
D3DFVF_TEX8 | 各頂点には 8 セットのテクスチャ座標があります。 |
D3DFVF_XYZRHW | 各頂点には、x、y、z、および w 座標があります。 このフラグは、必ず設定されます。 |
lpDDCommands
dwCommandOffset
dwCommandLength
lpDDCommands が dwCommandOffset 以降を指す、サーフェス内の有効なコマンド データのバイト数を指定します。
lpDDVertex
dwFlags でD3DHALDP2_USERMEMVERTICES フラグが設定されていない場合に、頂点データを含む DirectDraw サーフェスを識別するDD_SURFACE_LOCAL構造体を指します。 lpVertices を使用して共用体を形成します。
lpVertices
dwFlags でD3DHALDP2_USERMEMVERTICES フラグが設定されている場合に、頂点データを含むユーザー モードのメモリ ブロックを指します。
dwVertexOffset
頂点データが開始する lpDDVertex または lpVertices によって指されるサーフェスへのバイト数を指定します。
dwVertexLength
lpDDVertex または lpVertices が指すサーフェスに有効なデータが存在する頂点の数を指定します。 この有効なデータは dwVertexOffset から始まります。
dwReqVertexBufSize
ドライバーがスワップ頂点バッファーに割り当てる必要がある最小バイト数を指定します。 このメンバーは、D3DHALDP2_REQVERTEXBUFSIZE フラグが設定されている場合にのみ有効です。 頂点バッファーのマルチバッファーをサポートしていないドライバーは、このメンバーを無視する必要があります。
dwReqCommandBufSize
ドライバーがスワップ コマンド バッファーを増やす必要がある最小バイト数を指定します。 このメンバーは、D3DHALDP2_REQCOMMANDBUFSIZE フラグが設定されている場合にのみ有効です。 コマンド バッファーのマルチバッファーをサポートしていないドライバーは、このメンバーを無視する必要があります。
lpdwRStates
ドライバーがコマンド バッファーからレンダリング状態コマンドを解析するときに更新する必要があるレンダリング状態配列を指します。 ドライバーは、D3DHALDP2_EXECUTEBUFFER フラグが dwFlags で設定されている場合にのみ、この配列を更新する必要があります。 ドライバーは、 D3DRENDERSTATETYPE 列挙型を使用して、レンダリング状態配列の適切な要素を更新する必要があります。
dwVertexSize
各頂点のサイズをバイト単位で指定します。 このメンバーは 、ddrval を持つ共用体を形成します。
ddrval
ドライバーが D3dDrawPrimitives2 の戻り値を書き込む場所を指定します。 D3D_OK成功を示します。 それ以外の場合、ドライバーは適切なD3DERR_Xxx エラー コードを 返す必要があります。 詳細については、「 Direct3D ドライバー コールバックのリターン コード」を参照してください。
値 | 意味 |
---|---|
D3D_OK | 操作は正常に完了しました。 |
D3DERR_COMMAND_UNPARSED | ドライバーでは、Direct3D ランタイムが実行バッファーを解析する必要があります。 |
dwErrorOffset
各D3DHAL_DP2RESPONSEQUERYの後に、クエリに関連する次のデータが続きます。
- BOOL for D3DQUERYTYPE_EVENT
- DWORD for D3DQUERYTYPE_OCCLUSION
- D3DQUERYTYPE_VCACHEのD3DDEVINFO_VCACHE構造
注釈
dwVertexOffset メンバーはバイト単位で値を指定します。dwVertexLength メンバーは、頂点の値を指定します。
lpDDVertex または lpVertices のサーフェスに存在する有効なデータをバイト単位で計算するには、dwVertexLength の値に dwVertexSize の値を乗算します。
要件
要件 | 値 |
---|---|
Header | d3dhal.h (D3dhal.h を含む) |