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 を使うことができる。