次の方法で共有


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

関連項目

IDirect3DDevice9