IDirect3DDevice9::UpdateTexture メソッド (d3d9.h)

テクスチャのダーティ部分を更新します。

構文

HRESULT UpdateTexture(
  [in] IDirect3DBaseTexture9 *pSourceTexture,
  [in] IDirect3DBaseTexture9 *pDestinationTexture
);

パラメーター

[in] pSourceTexture

種類: IDirect3DBaseTexture9*

ソース テクスチャを表す IDirect3DBaseTexture9 インターフェイスへのポインター。 ソース テクスチャは、システム メモリ (D3DPOOL_SYSTEMMEM) 内にある必要があります。

[in] pDestinationTexture

種類: IDirect3DBaseTexture9*

宛先テクスチャを表す IDirect3DBaseTexture9 インターフェイスへのポインター。 宛先テクスチャは、D3DPOOL_DEFAULTメモリ プール内にある必要があります。

戻り値

型: HRESULT

メソッドが成功した場合、戻り値はD3D_OK。 メソッドが失敗した場合は、戻り値をD3DERR_INVALIDCALLできます。

解説

テクスチャの一部をロックするか、次のいずれかのメソッドを呼び出して、テクスチャの一部をダーティできます。

IDirect3DDevice9::UpdateTexture は、前回の更新操作以降に累積された内容を計算して、テクスチャのダーティ部分を取得します。

パフォーマンス上の理由から、ダーティ領域はテクスチャのレベル 0 に対してのみ記録されます。 サブレベルの場合、対応する (拡大縮小された) 四角形またはボックスもダーティと見なされます。 LockRect または IDirect3DVolumeTexture9::LockBox がD3DLOCK_NO_DIRTY_UPDATEまたはD3DLOCK_READONLYなしで呼び出されると、ダーティ 領域が自動的に記録されます。 また、IDirect3DDevice9::UpdateSurface の宛先サーフェスはダーティマークされています。

テクスチャの種類が異なる場合、下位レベルのバッファーのサイズが異なる場合、または一致するレベルが一致しない場合、このメソッドは失敗します。 たとえば、次のディメンションを持つ 6 レベルのソース テクスチャを考えてみましょう。


32x16, 16x8, 8x4, 4x2, 2x1, 1x1

この 6 レベルのソース テクスチャは、次の 1 レベルの宛先のソースになる可能性があります。


1x1

次の 2 レベルの宛先の場合。


2x1, 1x1

または、次の 3 レベルの宛先について。


4x2, 2x1, 1x1

さらに、テクスチャの形式が異なる場合、このメソッドは失敗します。 コピー先テクスチャのレベルがソースよりも少ない場合は、一致するレベルのみがコピーされます。 ソース テクスチャのレベルが宛先よりも少ない場合、メソッドは失敗します。

ソース テクスチャにダーティリージョンがある場合は、コピーをそれらのリージョンのみに制限することで、コピーを最適化できます。 ダーティマークされたバイトのみがコピーされる保証はありません。

ソースサーフェスとターゲットサーフェスの組み合わせの可能性を次に示します。

  • pSourceTexture が自動生成されていない mipmap で、pDestinationTexture が自動生成された mipmap の場合、最上位の一致レベルのみが更新され、変換先のサブレベルが再生成されます。 他のすべてのソース サブレベルは無視されます。
  • pSourceTexture と pDestinationTexture の両方が自動生成されたミップマップである場合は、最上位の一致レベルのみが更新されます。 ソースのサブレベルは無視され、変換先のサブレベルが再生成されます。
  • pSourceTexture が自動生成された mipmap と pDestinationTexture に自動生成されていない mipmap の場合、UpdateTexture は失敗します。

要件

   
対象プラットフォーム Windows
ヘッダー d3d9.h (D3D9.h を含む)
Library D3D9.lib

関連項目

IDirect3D9::CreateDevice

IDirect3DDevice9