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

要件

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

こちらもご覧ください

IDirect3D9::CreateDevice

IDirect3DDevice9