次の方法で共有


PDD_CREATESURFACE コールバック関数 (ddrawint.h)

CreateD3DBuffer コールバック関数は、指定した説明のドライバー レベルのコマンドまたは頂点バッファーを作成するために使用されます。

構文

PDD_CREATESURFACE PddCreatesurface;

DWORD PddCreatesurface(
  PDD_CREATESURFACEDATA unnamedParam1
)
{...}

パラメーター

unnamedParam1

バッファーの作成に必要な情報を含む DD_CREATESURFACEDATA 構造体を指します。

戻り値

CreateD3DBuffer は 、次のいずれかのコールバック コードを返します。

注釈

このコールバックは、ドライバーがドライバー レベルのコマンド バッファーと頂点バッファーを管理する場合にのみ使用されます。

既定では、Windows 2000 以降のバージョンでプライマリ サーフェスが作成されると、ドライバーには通知されません。 ただし、ドライバーが DdGetDriverInfo 呼び出しでGUID_NTPrivateDriverCaps GUID をサポートし、DDHAL_PRIVATECAP_NOTIFYPRIMARYCREATION フラグがDD_NTPRIVATEDRIVERCAPS構造体の dwPrivateCaps メンバーに設定されている場合は、ドライバーに通知されます。

ピッチは、DD_SURFACE_GLOBAL構造体と DDSURFACEDESC 構造体の両方の lPitch メンバーで返す必要があります。 線形メモリの場合、ドライバーは dwBlockSizeX をメモリ領域のサイズ (バイト単位) に設定し、 dwBlockSizeY を 1 に設定する必要があります。 どちらも DD_SURFACE_GLOBAL 構造体のメンバーです。

この呼び出しには、 DdCreateSurface と同じプロトタイプがあります。 CreateD3DBuffer コールバックは、問題のサーフェスがDD_SURFACE_LOCAL構造体の ddsCaps メンバーにDDSCAPS_EXECUTEBUFFER フラグを設定している場合に代わりに使用されます。 バッファー作成フラグは、DDSCAPS_WRITEONLY、DDSCAPS2_VERTEXBUFFER、およびDDSCAPS2_COMMANDBUFFERです。

ドライバーは、次のフラグのDD_SURFACE_LOCAL構造体の ddsCaps メンバーをチェックすることによって、要求されるバッファーの種類を決定します。

フラグ 説明
DDSCAPS2_COMMANDBUFFER ドライバーはコマンド バッファーを割り当てる必要があります。
DDSCAPS2_VERTEXBUFFER ドライバーは、明示的な頂点バッファーを割り当てる必要があります。
 
メモ どちらのフラグも設定されていない場合、ドライバーは暗黙的な頂点バッファーを割り当てる必要があります。 暗黙的な頂点バッファーは、読み取り/書き込みが想定されているため、ビデオ メモリに配置しないでください。 DDSCAPS_WRITEONLY フラグが設定された明示的な頂点バッファーのみをビデオ メモリに安全に配置できます。
 
ドライバーは、バッファー メモリ自体を割り当てることも、Microsoft DirectDraw にメモリ管理の実行を要求することもできます。 ドライバーが割り当てを実行する場合は、DD_SURFACE_GLOBAL構造体の fpVidMem メンバー内のメモリへの有効なポインターを書き込 必要があります。

または、 ドライバーは、fpVidMem で次のいずれかの値を返すことによって、DirectDraw にバッファーの割り当てを要求できます。

意味
DDHAL_PLEASEALLOC_BLOCKSIZE DirectDraw は、オフスクリーン メモリからバッファー メモリを割り当てる必要があります。
DDHAL_PLEASEALLOC_USERMEM DirectDraw は、ユーザー メモリからバッファー メモリを割り当てる必要があります。 ドライバーは、 dwUserMemSize のメモリ領域のサイズ (バイト単位) も返す必要があります。

要件

要件
対象プラットフォーム デスクトップ
Header ddrawint.h (Winddi.h を含む)

こちらもご覧ください

DDSURFACEDESC

DD_CREATESURFACEDATA

DD_NTPRIVATEDRIVERCAPS

DD_SURFACE_GLOBAL

DD_SURFACE_LOCAL

DdCreateSurface

DdGetDriverInfo