IDirect3DDevice9::UpdateTexture メソッド (d3d9.h)
テクスチャの汚れた部分を更新します。
構文
HRESULT UpdateTexture(
[in] IDirect3DBaseTexture9 *pSourceTexture,
[in] IDirect3DBaseTexture9 *pDestinationTexture
);
パラメーター
[in] pSourceTexture
ソース テクスチャを表す IDirect3DBaseTexture9 インターフェイスへのポインター。 ソース テクスチャは、システム メモリ (D3DPOOL_SYSTEMMEM) 内にある必要があります。
[in] pDestinationTexture
宛先テクスチャを表す IDirect3DBaseTexture9 インターフェイスへのポインター。 宛先テクスチャは、D3DPOOL_DEFAULT メモリ プール内に存在する必要があります。
戻り値
型: HRESULT
メソッドが成功した場合、戻り値はD3D_OK。 メソッドが失敗した場合は、戻り値をD3DERR_INVALIDCALLできます。
注釈
テクスチャの一部を汚すには、テクスチャをロックするか、次のいずれかのメソッドを呼び出します。
- IDirect3DCubeTexture9::AddDirtyRect
- IDirect3DTexture9::AddDirtyRect
- IDirect3DVolumeTexture9::AddDirtyBox
- IDirect3DDevice9::UpdateSurface
パフォーマンス上の理由から、ダーティ リージョンはテクスチャのレベル 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 |