IDirect3DDevice9::UpdateSurface

ピクセルの矩形のサブセットをあるサーフェスから別のサーフェスにコピーします。

HRESULT 
UpdateSurface(
  IDirect3DSurface9* pSourceSurface,
  CONST RECT* pSourceRect,
  IDirect3DSurface9* pDestinationSurface,
  CONST POINT* pDestinationPoint
);

パラメータ

  • pSourceSurface
    ソース サーフェスを表す IDirect3DSurface9 インターフェイスへのポインターです。このパラメーターには、pDestinationSurface とは別のサーフェスを指定する必要があります。
  • pSourceRect
    ソース サーフェス上の矩形へのポインター。このパラメーターに NULL を指定すると、サーフェス全体がコピーされます。
  • pDestinationSurface
    IDirect3DSurface9 インターフェイスへのポインターです。デスティネーション サーフェスを表します。
  • pDestinationPoint
    デスティネーション矩形の左上隅へのポインターです。このパラメーターに NULL を指定すると、サーフェス全体がコピーされます。

戻り値

メソッドが成功した場合は、D3D_OK を返します。失敗した場合は、次の戻り値のいずれかを返します。D3DERR_INVALIDCALL

解説 

このメソッドは DirectX 8 の CopyRects と同様です。

この関数には、以下の制限があります。

  • ソース サーフェスは D3DPOOL_SYSTEMMEM を使用して作成されている必要があります。
  • デスティネーション サーフェスは D3DPOOL_DEFAULT を使用して作成されている必要があります。
  • いずれのサーフェスもロックできません。または未処理のデバイス コンテキストを保持できません。
  • いずれのサーフェスもマルチサンプリングを使用して作成できません。両方のサーフェスに有効な唯一のフラグは D3DMULTISAMPLE_NONE です。
  • サーフェス フォーマットは深度ステンシル フォーマットであってはなりません。
  • ソースおよびデスティネーション矩形はサーフェス内に収まる必要があります。
  • 拡大や縮小は許可されません (矩形は同じサイズである必要があります)。
  • ソース フォーマットはデスティネーション フォーマットと一致する必要があります。

サポートされる組み合わせを以下の表に示します。

Dest フォーマット
テクスチャー RT テクスチャー RT オフスクリーン プレーン
Src フォーマット テクスチャー 可*
RT テクスチャー 不可 不可 不可 不可
RT 不可 不可 不可 不可
オフスクリーン プレーン

* 要求されたコピーをドライバーがサポートしない場合、ロックとコピーを使用してエミュレートされます。

D3DPOOL_DEFAULT レンダー ターゲットから D3DPOOL_SYSTEMMEM サーフェスにデータをコピーする必要がある場合は、IDirect3DDevice9::GetRenderTargetData を使用できます。

要件

ヘッダー: D3D9.h 宣言

ライブラリ: D3D9.lib 内容