IDirect3DDevice9::UpdateSurface 方法 (d3d9.h)
将像素的矩形子集从一个图面复制到另一个图面。
语法
HRESULT UpdateSurface(
[in] IDirect3DSurface9 *pSourceSurface,
[in] const RECT *pSourceRect,
[in] IDirect3DSurface9 *pDestinationSurface,
[in] const POINT *pDestPoint
);
参数
[in] pSourceSurface
类型: IDirect3DSurface9*
指向表示源图面 的 IDirect3DSurface9 接口的指针。 此参数必须指向与 pDestinationSurface 不同的图面。
[in] pSourceRect
类型: const RECT*
指向源图面上矩形的指针。 为此参数指定 NULL 会导致复制整个图面。
[in] pDestinationSurface
类型: IDirect3DSurface9*
指向表示目标图面 的 IDirect3DSurface9 接口的指针。
[in] pDestPoint
类型: const POINT*
指向目标矩形左上角的指针。 为此参数指定 NULL 会导致复制整个图面。
返回值
类型: HRESULT
如果该方法成功,则返回值D3D_OK。 如果方法失败,则返回值可以是下列值之一:D3DERR_INVALIDCALL。
注解
此方法类似于 DirectX 8 中的 CopyRects。
此函数具有以下限制。
- 源图面必须已使用 D3DPOOL_SYSTEMMEM 创建。
- 目标图面必须已使用 D3DPOOL_DEFAULT 创建。
- 两个图面都不能锁定或包含未完成的设备上下文。
- 不能使用多重采样创建这两个图面。 两个图面的唯一有效标志是D3DMULTISAMPLE_NONE。
- 图面格式不能是深度模具格式。
- 源和 dest 矩形必须适合表面。
- 不允许拉伸或收缩, (凹槽的大小必须相同) 。
- 源格式必须与 dest 格式匹配。
Dest 格式 | |||||
---|---|---|---|---|---|
纹理 | RT 纹理 | RT | 屏幕外纯 | ||
Src 格式 | 纹理 | 是 | 是 | 是* | 是 |
RT 纹理 | 否 | 否 | 否 | 否 | |
RT | 否 | 否 | 否 | 否 | |
屏幕外纯 | 是 | 是 | 是 | 是 |
- 如果驱动程序不支持请求的副本,则会使用 lock 和 copy 对其进行模拟。
如果应用程序需要将数据从D3DPOOL_DEFAULT呈现目标复制到D3DPOOL_SYSTEMMEM图面,则可以使用 GetRenderTargetData。
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | d3d9.h (包括 D3D9.h) |
Library | D3D9.lib |