Microsoft DirectX 8.0 (C++)

IDirect3DDevice8::UpdateTexture

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

HRESULT UpdateTexture(
  IDirect3DBaseTexture8* pSourceTexture,
  IDirect3DBaseTexture8* pDestinationTexture
);

パラメータ

pSourceTexture
[in] 転送元テクスチャを表す IDirect3DBaseTexture8 インターフェイスへのポインタ。転送元テクスチャはシステム メモリ内 (D3DPOOL_SYSTEMMEM) になければならない。
pDestinationTexture
[in] 転送先テクスチャを表す IDirect3DBaseTexture8 インターフェイスへのポインタ。転送先テクスチャは D3DPOOL_DEFAULT メモリ プールになければならない。

戻り値

成功した場合は、D3D_OK を返す。

失敗した場合は、D3DERR_INVALIDCALL を返す。

注意

テクスチャの一部分をダーティーにするには、その部分をロックするか、または次のいずれかのメソッドを呼び出す。

UpdateTexture は、最後の更新操作以降に累積された操作を計算することで、テクスチャのダーティー部分を取得する。

転送元と転送先のテクスチャのタイプが異なる場合、両方のテクスチャの最下位バッファのサイズが異なる場合、および一致レベルが一致しない場合、このメソッドは失敗する。たとえば、次のようなディメンジョンの 6 つのレベルの転送元テクスチャがあるとする。

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

この 6 つのレベルの転送元テクスチャは、次の 1 つのレベルの転送先の転送元になる。

1x1

2 つのレベルの転送先の場合。

2x1, 1x1

または、4 つのレベルの転送先の場合。

4x2, 2x1, 1x1

また、テクスチャのフォーマットが異なる場合、このメソッドは失敗する。転送先テクスチャのレベル数が転送元より少ない場合は、一致するレベルだけがコピーされる。

転送元テクスチャにダーティー領域がある場合は、コピーをその領域だけに限定することで、コピー処理を最適化できる。ダーティーとしてマークされているバイトだけがコピーされるという保証はない。

パフォーマンスの理由によって、ダーティーな範囲はテクスチャのレベルゼロに対して記録されるのみである。サブレベルについては、対応する ( スケールされた ) 矩形、またはボックスもダーティーであると仮定される。D3DLOCK_NO_DIRTY_UPDATE または D3DLOCK_READONLY なしで LockRectLockBox が呼び出されたとき、ダーティーな範囲は自動的に記録される。また CopyRects 呼び出しの宛先サーフェイスはダーティーとしてマークされる。

動作環境

  ヘッダー : d3d8.h で宣言。
  インポート ライブラリ : D3d8.lib を使用。

参照

IDirect3D8::CreateDevice