Direct3D ドライバーの初期化

DirectDraw のサポートを初期化するために、ドライバーの DrvGetDirectDrawInfo 関数が Microsoft DirectDraw ランタイムによって呼び出されたときは、ドライバーは、その Microsoft Direct3D 機能を示すために以下の操作を行う必要があります。

  • ドライバーのハードウェアが 3D アクセラレーションに対応していることを示すために、DD_HALINFO 構造体の ddCaps.dwCaps メンバーに DDCAPS_3D フラグを設定します。

  • ドライバーのビデオ メモリ サーフェスの 3D 機能を記述する DD_HALINFO 構造体の ddCaps.ddsCaps メンバーに、DDSCAPS_Xxx フラグを設定します。 次の表にフラグの一覧を示します。

    フラグ 意味

    DDSCAPS_3DDEVICE

    ドライバーのサーフェスを 3D レンダリングのターゲットとして使用できることを示します。

    DDSCAPS_TEXTURE

    ドライバーのサーフェスを 3D テクスチャ マッピングに使用できることを示します。

    DDSCAPS_ZBUFFER

    ドライバーのサーフェスを Z バッファーとして使用できることを示します。

  • ドライバーの DdGetDriverInfo コールバックをポイントする DD_HALINFO 構造体の GetDriverInfo メンバーを設定します。 ドライバーは、DdGetDriverInfo コールバックを実装済みであることを示すために、DD_HALINFO 構造体の dwFlags メンバーに DDHALINFO_GETDRIVERINFOSET フラグも設定する必要があります。

  • D3DHAL_CALLBACKS 構造体のメンバーを割り当てて初期化し、この構造体を DD_HALINFO 構造体の lpD3DHALCallbacks メンバーで返します。

  • D3DHAL_GLOBALDRIVERDATA 構造体のメンバーを割り当てて初期化し、この構造体を DD_HALINFO 構造体の lpD3DGlobalDriverData メンバーで返します。

ドライバーが Microsoft DirectX 7.0 で動作することを示すには、次の操作を行う必要があります。

  • Microsoft Direct3D ドライバーの初期化中に報告される D3DDEVICEDESC_V1 構造体の dwDevCaps メンバーに、D3DDEVCAPS_DRAWPRIMITIVES2EX フラグを含めます。

  • DD_MISCELLANEOUS2CALLBACKS 構造体の GetDriverStateCreateSurfaceExDestroyDDLocal メンバーを設定して、DdGetDriverInfo コールバックの GUID_Miscellaneous2Callbacks GUID に応答します。 これらは、それぞれ DDHAL_MISC2CB32_CREATESURFACEEX、DDHAL_MISC2CB32_GETDRIVERSTATE、およびDDHAL_MISC2CB32_DESTROYDDLOCAL ビットを持つ dwFlags メンバーで、Direct3D ドライバーと ORed の適切なコールバックをポイントするように設定されます。

DrvGetDirectDrawInfo が返された後、GDI は、ドライバーの初期化を完了するために、異なる GUID に対してドライバーの DdGetDriverInfo コールバックを複数回呼び出します。 Direct3D をサポートするためには、DdGetDriverInfo コールバックは以下の GUID に応答する必要があります。

GUID_D3DCallbacks3
ドライバーは、D3DHAL_CALLBACKS3 構造体のメンバーを割り当てて初期化し、DD_GETDRIVERINFODATA 構造体の lpvData メンバーでこの構造体を返す必要があります。

GUID_Miscellaneous2Callbacks
ドライバーは、DD_MISCELLANEOUS2CALLBACKS 構造体のメンバーを割り当てて初期化し、DD_GETDRIVERINFODATA 構造体の lpvData メンバーでこの構造体を返す必要があります。

GUID_D3DExtendedCaps
ドライバーは、D3DHAL_D3DEXTENDEDCAPS 構造体の適切なメンバーを割り当てて初期化し、DD_GETDRIVERINFODATA 構造体の lpvData メンバーでこの構造体を返す必要があります。

GUID_ZPixelFormats
ドライバーは、ドライバーがサポートするすべての Z バッファー形式について、DDPIXELFORMAT 構造体の適切なメンバーを割り当てて初期化し、DD_GETDRIVERINFODATA 構造体の lpvData メンバーでこれらの構造体を返す必要があります。 ドライバーが D3dDrawPrimitives2 の実装で D3DDP2OP_CLEAR 操作コードをサポートしている場合、この GUID に応答する必要があります。

GUID_D3DParseUnknownCommandCallback
ドライバーは、Direct3D ランタイム の D3DParseUnknownCommand コールバックへのポインターを格納する必要があります。 このポインターは、DD_GETDRIVERINFODATA 構造体の lpvData メンバーでドライバーに渡されます。 ドライバーの D3dDrawPrimitives2 コールバックは、ドライバーが認識しないコマンドを解析するために、D3DParseUnknownCommand コールバックを呼び出します。

詳細については、「DirectDraw ドライバーの初期化」を参照してください。