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 が自動生成されていない mipmap で、pDestinationTexture が自動生成された mipmap の場合、最上位の一致レベルのみが更新され、変換先のサブレベルが再生成されます。 他のすべてのソース サブレベルは無視されます。
- pSourceTexture と pDestinationTexture の両方が自動生成されたミップマップである場合は、最上位の一致レベルのみが更新されます。 ソースのサブレベルは無視され、変換先のサブレベルが再生成されます。
- pSourceTexture が自動生成された mipmap と pDestinationTexture に自動生成されていない mipmap の場合、UpdateTexture は失敗します。
要件
対象プラットフォーム | Windows |
ヘッダー | d3d9.h (D3D9.h を含む) |
Library | D3D9.lib |