PDD_CREATESURFACE
コールバックシグネチャ
DWORD PDD_CREATESURFACE(
DD_CREATESURFACEDATA* param0
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| param0 | DD_CREATESURFACEDATA* | バッファーの作成に必要な情報を格納する DD_CREATESURFACEDATA 構造体へのポインターです。 |
公式ドキュメント
CreateD3DBuffer コールバック関数は、指定された記述のドライバーレベルのコマンドバッファーまたは頂点バッファーを作成するために使用されます。
戻り値
CreateD3DBuffer は、次のいずれかのコールバックコードを返します:
解説(Remarks)
このコールバックは、ドライバーがドライバーレベルのコマンドバッファーおよび頂点バッファーを管理する場合にのみ使用されます。
既定では、Windows 2000 以降のバージョンでプライマリサーフェスが作成されても、ドライバーには通知されません。ただし、ドライバーが DdGetDriverInfo の呼び出しで GUID_NTPrivateDriverCaps GUID をサポートし、DD_NTPRIVATEDRIVERCAPS 構造体の dwPrivateCaps メンバーに DDHAL_PRIVATECAP_NOTIFYPRIMARYCREATION フラグが設定されている場合は、ドライバーに通知されます。
ピッチは、DD_SURFACE_GLOBAL 構造体と DDSURFACEDESC 構造体の両方の lPitch メンバーで返す必要があります。リニアメモリの場合、ドライバーは dwBlockSizeX にメモリ領域のサイズ (バイト単位) を設定し、dwBlockSizeY に 1 を設定します。どちらも DD_SURFACE_GLOBAL 構造体のメンバーです。
この呼び出しは DdCreateSurface と同じプロトタイプを持ちます。対象のサーフェスで DD_SURFACE_LOCAL 構造体の ddsCaps メンバーに DDSCAPS_EXECUTEBUFFER フラグが設定されている場合は、代わりに CreateD3DBuffer コールバックが使用されます。バッファーの作成フラグは DDSCAPS_WRITEONLY、DDSCAPS2_VERTEXBUFFER、および DDSCAPS2_COMMANDBUFFER です。
ドライバーは、DD_SURFACE_LOCAL 構造体の ddsCaps メンバーで次のフラグを調べて、要求されているバッファーの種類を判断します:
| フラグ | 意味 |
|---|---|
| DDSCAPS2_COMMANDBUFFER | ドライバーはコマンドバッファーを割り当てます。 |
| DDSCAPS2_VERTEXBUFFER | ドライバーは明示的な頂点バッファーを割り当てます。 |
あるいは、ドライバーは fpVidMem に次のいずれかの値を返すことで、DirectDraw にバッファーの割り当てを要求できます:
| 値 | 意味 |
|---|---|
| DDHAL_PLEASEALLOC_BLOCKSIZE | DirectDraw はオフスクリーンメモリからバッファーメモリを割り当てます。 |
| DDHAL_PLEASEALLOC_USERMEM | DirectDraw はユーザーメモリからバッファーメモリを割り当てます。ドライバーは、メモリ領域のサイズ (バイト単位) を dwUserMemSize で返す必要もあります。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)