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_BLThSrcResourcehDstResource 成员指定同一资源) 的句柄。
  • 源矩形和目标矩形重叠 (即,SrcRectDstRect 成员中的 RECT 结构的坐标D3DDDIARG_BLT重叠) 。
用户模式显示驱动程序必须处理与视频内存的所有 bitblt,包括从视频内存到系统内存的 bitblt。 如果用户模式显示驱动程序不能使用图形处理单元 (GPU) 从视频内存向系统内存发出比特,则用户模式显示驱动程序可以使用 CPU 复制数据。

用户模式显示驱动程序必须仅支持 Microsoft DirectX 8.0 之前引入的格式的色键。 对于 DirectX 8.0 及更高版本中引入的格式,不需要颜色键支持。

要执行的 bitblt 类型通过 D3DDDIARG_BLTFlags 成员中指定的位字段标志来指示。 视频内存到视频内存比特可以包括颜色密钥、拉伸、镜像和线性到 sRGB 格式转换。 系统内存到视频内存比特可以包括拉伸和线性到 sRGB 格式转换;但是,这些类型的 bitblts 绝不包括镜像或颜色密钥。 所有视频内存到系统内存 bitblts 和系统内存到系统内存 bitblts 都是直接副本;也就是说,这些类型的 bitblts 绝不包括拉伸、镜像、颜色键或线性到 sRGB 格式转换。 有关 sRGB 格式的详细信息,请参阅 sRGB 网站。

有关 Blt 函数在转换深度模具值时必须遵循的规则的详细信息,请参阅 复制 Depth-Stencil 值

Direct3D 运行时可以调用用户模式显示驱动程序的 Blt 函数,将任何源图面类型 (的内容(如屏幕外普通类型、呈现目标类型或纹理类型)) 复制到任何其他目标图面类型。

要求

要求
最低受支持的客户端 在 Windows Vista 和更高版本的 Windows 操作系统中可用。
目标平台 桌面
标头 d3dumddi.h (包括 D3dumddi.h)

另请参阅

D3DDDIARG_BLT

D3DDDI_DEVICEFUNCS

pfnRenderCb