复制到 Surface (Direct3D 9)

使用 IDirect3DDevice9::UpdateSurface 时,在源图面上传递矩形,或使用 NULL 指定整个图面。 还将传递目标图面上的一个点,源图像上矩形的左上角位置将复制到该点。 此方法不支持剪裁。 除非源矩形和相应的目标矩形分别完全包含在源图面和目标图面中,否则操作将失败。 此方法不支持 alpha 混合、颜色键或格式转换。 请注意,目标图面和源图面必须不同。

有关使用 UpdateSurface 时的其他限制,请参阅 IDirect3DDevice9::UpdateSurface

C++/C 中还提供了以下方法,用于将图像复制到 Direct3D 图面。

UpdateSurface 示例

以下示例将两个矩形从源图面复制到目标图面。 从 (0 复制第一个矩形, 源图面上的 0、50、50) 到目标图面上的相同位置,第二个矩形从源图面上的 (50、50、100、100、100) 复制到目标图面上的 (150、150、200、200) 。

//The following assumptions are made:
// -d3dDevice is a valid Direct3DDevice9 object.
// -pSource and pDest are valid IDirect3DSurface9 pointers.

RECT  rcSource[] = {  0,  0,  50,  50,
                     50, 50, 100, 100 };
POINT ptDest[]   = {  0,  0, 150, 150 };

d3dDevice->UpdateSurface( pSource, rcSource, 2, pDest, ptDest);

Direct3D 图面

IDirect3DDevice9::StretchRect