IDirect3DDevice9::UpdateSurface メソッド (d3d9helper.h)
ピクセルの四角形のサブセットを 1 つのサーフェスから別のサーフェスにコピーします。
構文
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のみです。
- サーフェス形式を深度ステンシル形式にすることはできません。
- ソースとデストのレレットは、サーフェス内に収まる必要があります。
- ストレッチまたは縮小は許可されません (rect は同じサイズである必要があります)。
- ソース形式は dest 形式と一致する必要があります。
Dest 形式 | |||||
---|---|---|---|---|---|
テクスチャ | RT テクスチャ | RT | 画面外のプレーン | ||
Src 形式 | テクスチャ | はい | はい | はい* | はい |
RT テクスチャ | いいえ | いいえ | いいえ | いいえ | |
RT | いいえ | いいえ | いいえ | いいえ | |
画面外のプレーン | はい | はい | はい | はい |
- ドライバーが要求されたコピーをサポートしていない場合は、ロックとコピーを使用してエミュレートされます。
アプリケーションがD3DPOOL_DEFAULTレンダー ターゲットからD3DPOOL_SYSTEMMEMサーフェスにデータをコピーする必要がある場合は、 GetRenderTargetData を使用できます。
要件
対象プラットフォーム | Windows |
ヘッダー | d3d9helper.h (D3D9.h を含む) |
Library | D3D9.lib |