IDirect3DDevice9::UpdateSurface メソッド

IDirect3DDevice9::UpdateSurface メソッド

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

構文

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

パラメータ

  • pSourceSurface
    [in] IDirect3DSurface9 インターフェイスへのポインタ。転送元サーフェイスを表す。このパラメータは、pDestinationSurface と異なるサーフェイスを示していなければならない。
  • pSourceRect
    [in] 転送元サーフェイスの矩形へのポインタ。このパラメータに NULL を指定すると、サーフェイス全体がコピーされる。
  • pDestinationSurface
    [in] IDirect3DSurface9 インターフェイスへのポインタ。転送先サーフェイスを表す。
  • pDestinationPoint
    [in] 転送先矩形の左上隅へのポインタ。このパラメータに NULL を指定すると、サーフェイス全体がコピーされる。

戻り値

成功した場合は、D3D_OK を返す。

失敗した場合は、次のいずれかの値を返す。

D3DERR_INVALIDCALL メソッドの呼び出しが無効である。たとえば、メソッドのパラメータに無効な値が設定されている場合などである。

注意

このメソッドは、Microsoft® DirectX® 8.0 の CopyRects に類似している。

このメソッドには次の制限がある。

  • 転送元サーフェイスは、D3DPOOL_SYSTEMMEM で作成する必要がある。
  • 転送先サーフェイスは、D3DPOOL_DEFAULT で作成する必要がある。
  • どちらのサーフェイスもロックしたり、未処理のデバイス コンテキストを保持したりできない。
  • どちらのサーフェイスも、マルチサンプリングで作成できない。どちらのサーフェイスにも有効なフラグは、D3DMULTISAMPLE_NONE だけである。
  • サーフェイス フォーマットは、深度ステンシル フォーマットにはできない。
  • 転送元および転送先の矩形は、サーフェイス内に収まらなければならない。
  • 拡大も縮小もできない (矩形は同じサイズでなければならない)。
  • 転送元フォーマットと転送先フォーマットが一致していなければならない。

現在サポートされている組み合わせを次の表に示す。

転送先フォーマット
テクスチャRT テクスチャRT単純なオフスクリーン
転送元フォーマットテクスチャはいはいはい*はい
RT テクスチャいいえいいえいいえいいえ
RTいいえ
いいえ
いいえ
いいえ
単純なオフスクリーンはいはいはいはい

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

アプリケーションが D3DPOOL_DEFAULT レンダリング ターゲットから D3DPOOL_SYSTEMMEM サーフェイスにデータをコピーする必要がある場合、IDirect3DDevice9::GetRenderTargetData を使うことができる。