共用方式為


Direct3D 9 (紋理變更區域)

應用程式可以藉由在紋理上指定「已變更」區域,將紋理的子集優化。 只有標示為已變更的區域會透過 呼叫 IDirect3DDevice9::UpdateTexture來複製。 不過,可能會擴充已變更的區域,以優化對齊方式。 建立紋理時,會將整個紋理視為已變更。 只有下列作業會影響紋理的已變更狀態:

已變更區域是在已套用紋理的最上層設定, 而 IDirect3DDevice9::UpdateTexture 可以向下展開 Mip 鏈結中的已變更區域,以便將每個子層級複製的位元組數目降到最低。 請注意,子層級的中途區域座標會向外四捨五入,也就是說,其小數部分會四捨五入到紋理的最接近邊緣。

因為每種紋理類型都有不同類型的已變更區域,所以每個紋理類型都有方法。 2D 紋理使用已變更的矩形,而磁片區紋理則會使用方塊。

針對上述方法傳遞 pDirtyRect 或 pDirtyBox 參數的 Null 會展開已變更的區域,以涵蓋整個紋理。

每個鎖定方法都可以D3DLOCK_NO_DIRTY_UPDATE,以防止對紋理的已變更狀態進行任何變更。 如需詳細資訊,請參閱 鎖定資源 (Direct3D 9)

當鎖定作業期間變更之區域集的詳細資訊可用時,應用程式應該使用D3DLOCK_NO_DIRTY_UPDATE。 請注意,鎖定或複製到紋理子層級 (,也就是說,沒有鎖定或複製到最上層) 不會更新該紋理的已變更區域。 當應用程式鎖定較低層級而不鎖定最上層時,應用程式會承擔更新已變更區域相同的責任。

基本紋理概念