Microsoft DirectX 8.0 (C++)

テクスチャのダーティー領域

アプリケーションでは、テクスチャ上にダーティー領域を指定して、テクスチャのどのサブセットをコピーするかを最適化できる。ダーティーとしてマークされ領域のみが、IDirect3DDevice8::UpdateTexture 呼び出しによってコピーされる。ただし、ダーティー領域はアライメントを最適化するために拡大されることがある。テクスチャ作成時には、テクスチャ全体がダーティーと見なされる。ダーティー状態のテクスチャに影響を与える処理は、以下の 4 つである。

ダーティー領域はミップマップ テクスチャの最上位レベルに設定され、UpdateTexture は、ダーティー領域をミップ チェーンまで拡大して各サブレベルでコピーされるバイト数を最小限に抑えることができる。サブレベル ダーティー領域の座標は外側に丸められる、つまり小数部分はテクスチャに最も近接するエッジに丸められることに注意すること。

テクスチャ タイプによってダーティー領域のタイプも異なるため、テキスチャ タイプごとにメソッドがある。2D テクスチャはダーティー矩形を、ボリューム テクスチャはボックスを使用する。

上記メソッドの pDirtyRect または pDirtyBox パラメータに NULL を渡すと、ダーティー領域が拡大してテクスチャ全体を覆う。

各ロッキング メソッドは D3DLOCK_NO_DIRTY_UPDATE を取り、これによって、テクスチャのダーティー状態が変更されるのを防ぐことができる。詳細については、「リソースのロック」を参照すること。

アプリケーションは、ロック処理使用可能時に、領域のトゥルー セットに関する詳細情報が変更されたときは、D3DLOCK_NO_DIRTY_UPDATE を使用する。(最上位レベルまでロックまたはコピーしないで) テクスチャのサブレベルのみをロックまたはコピーしても、そのテクスチャのダーティー領域は更新されないことに注意すること。アプリケーションでも、最上位レベルをロックせずに下位レベルをロックしても、ダーティー領域は更新されない。