PFND3DDDI_BLT回调函数 (d3dumddi.h)
Blt 函数将源图面的内容复制到目标图面。
语法
PFND3DDDI_BLT Pfnd3dddiBlt;
HRESULT Pfnd3dddiBlt(
HANDLE hDevice,
const D3DDDIARG_BLT *unnamedParam2
)
{...}
参数
hDevice
显示设备的句柄 (图形上下文) 。
unnamedParam2
pData [in]
指向 D3DDDIARG_BLT 结构的指针,该结构描述位块传输 (bitblt) 的参数。
返回值
Blt 返回以下值之一:
返回代码 | 说明 |
---|---|
S_OK | 已成功执行资源的 bitblt。 |
E_OUTOFMEMORY | Blt 无法分配完成所需的内存。 |
注解
Microsoft Direct3D 运行时调用用户模式显示驱动程序的 Blt 函数,将源图面的内容复制到目标图面。 将图面引用映射到分配引用后,用户模式显示驱动程序应发出相应的硬件命令。 如果源或目标分配位于系统内存中,则可能需要用户模式显示驱动程序来同步 (也就是说,如果未完成的硬件命令流包含对系统内存分配的引用,) 调用 pfnRenderCb 函数。 如果源和目标分配都位于系统内存中,驱动程序应根据需要同步,但不应复制源图面的内容。 Direct3D 运行时在调用 pfnRenderCb 返回后复制内容。
用户模式显示驱动程序必须处理复制操作期间可能发生的以下情况:
- 目标图面和源图面属于同一资源 (即,D3DDDIARG_BLT的 hSrcResource 和 hDstResource 成员指定同一资源) 的句柄。
- 源矩形和目标矩形重叠 (即,SrcRect 和 DstRect 成员中的 RECT 结构的坐标D3DDDIARG_BLT重叠) 。
用户模式显示驱动程序必须仅支持 Microsoft DirectX 8.0 之前引入的格式的色键。 对于 DirectX 8.0 及更高版本中引入的格式,不需要颜色键支持。
要执行的 bitblt 类型通过 D3DDDIARG_BLT 的 Flags 成员中指定的位字段标志来指示。 视频内存到视频内存比特可以包括颜色密钥、拉伸、镜像和线性到 sRGB 格式转换。 系统内存到视频内存比特可以包括拉伸和线性到 sRGB 格式转换;但是,这些类型的 bitblts 绝不包括镜像或颜色密钥。 所有视频内存到系统内存 bitblts 和系统内存到系统内存 bitblts 都是直接副本;也就是说,这些类型的 bitblts 绝不包括拉伸、镜像、颜色键或线性到 sRGB 格式转换。 有关 sRGB 格式的详细信息,请参阅 sRGB 网站。
有关 Blt 函数在转换深度模具值时必须遵循的规则的详细信息,请参阅 复制 Depth-Stencil 值。
Direct3D 运行时可以调用用户模式显示驱动程序的 Blt 函数,将任何源图面类型 (的内容(如屏幕外普通类型、呈现目标类型或纹理类型)) 复制到任何其他目标图面类型。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 Windows Vista 和更高版本的 Windows 操作系统中可用。 |
目标平台 | 桌面 |
标头 | d3dumddi.h (包括 D3dumddi.h) |