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

lpDDCommandsdwCommandOffset 以降を指す、サーフェス内の有効なコマンド データのバイト数を指定します。

lpDDVertex

dwFlagsD3DHALDP2_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 を含む)

こちらもご覧ください

D3DHAL_DP2COMMAND

D3DRENDERSTATETYPE

D3dDrawPrimitives2

DD_SURFACE_GLOBAL

DD_SURFACE_LOCAL