PFND3DDDI_BLT回调函数 (d3dumddi.h)

Blt 函数将源图面的内容复制到目标图面。

语法

PFND3DDDI_BLT Pfnd3dddiBlt;

HRESULT Pfnd3dddiBlt(
  HANDLE hDevice,
  const D3DDDIARG_BLT *unnamedParam2
)
{...}

参数

hDevice

显示设备的句柄(图形上下文)。

unnamedParam2

pData [in]

指向描述位块传输(bitblt)参数的 D3DDDIARG_BLT 结构的指针。

返回值

Blt 返回以下值之一:

返回代码 说明
S_OK 已成功执行资源的 bitblt。
E_OUTOFMEMORY Blt 无法为其分配所需的内存才能完成。

言论

Microsoft Direct3D 运行时调用用户模式显示驱动程序 Blt 函数,将源图面的内容复制到目标图面。 将图面引用映射到分配引用后,用户模式显示驱动程序应发出相应的硬件命令。 如果源或目标分配位于系统内存中,则如果未完成的硬件命令流包含对系统内存分配的引用,则可能需要用户模式显示驱动程序同步(即调用 pfnRenderCb 函数)。 如果源分配和目标分配都位于系统内存中,驱动程序应根据需要同步,但不应复制源图面的内容。 Direct3D 运行时在调用 pfnRenderCb 返回后复制内容。

用户模式显示驱动程序必须处理复制作期间可能发生的以下条件:

  • 目标图面和源图面是同一资源的一部分(即 hSrcResourcehDstResourceD3DDDIARG_BLT 指定同一资源的句柄)。
  • 源矩形和目标矩形重叠(即 SrcRect 中的 RECT 结构的坐标,以及 D3DDDIARG_BLT 重叠的 DstRect 成员)。
用户模式显示驱动程序必须处理来自视频内存和从视频内存到系统内存的所有 bitblt,包括从视频内存到系统内存的 bitblt。 如果用户模式显示驱动程序无法使用图形处理单元(GPU)从视频内存向系统内存发出比特,则用户模式显示驱动程序可以使用 CPU 复制数据。

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

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

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

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

要求

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

另请参阅

D3DDDIARG_BLT

D3DDDI_DEVICEFUNCS

pfnRenderCb