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 相同。 当有问题的图面在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 中内存区域的大小(以字节为单位)。 |
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | ddrawint.h (包括 Winddi.h) |