Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le applicazioni possono ottimizzare il subset di una trama copiato specificando le aree "dirty" nelle trame. Solo le aree contrassegnate come dirty vengono copiate da una chiamata a IDirect3DDevice9::UpdateTexture. Tuttavia, le aree dirty possono essere espanse per ottimizzare l'allineamento. Quando viene creata una trama, l'intera trama viene considerata dirty. Solo le operazioni seguenti influiscono sullo stato dirty di una trama:
- Aggiunta di un'area dirty a una trama.
- Blocco di un buffer nella trama. Questa operazione aggiunge l'area bloccata come area dirty. L'applicazione può disattivare questo aggiornamento automatico dell'area dirty se ha una migliore conoscenza delle aree dirty effettive.
- Usando un livello di superficie della trama come destinazione in IDirect3DDevice9::UpdateSurface contrassegna l'intera trama come dirty.
- Usando la trama come origine in IDirect3DDevice9::UpdateTexture cancella tutte le aree dirty nella trama di origine.
- Uso di IDirect3DSurface9::GetDC per restituire un contesto di dispositivo.
- Chiamando IDirect3DBaseTexture9::GenerateMipSubLevels contrassegna l'intera trama come dirty.
- Chiamando IDirect3DBaseTexture9::SetAutoGenFilterType contrassegna l'intera trama come dirty.
Le aree dirty vengono impostate sul livello superiore di una trama mipmapped e IDirect3DDevice9::UpdateTexture può espandere l'area dirty verso il basso nella catena mip per ridurre al minimo il numero di byte copiati per ogni sottolivello. Si noti che le coordinate dell'area dirty sublevel vengono arrotondate verso l'esterno, ovvero le parti frazionarie vengono arrotondate verso il bordo più vicino della trama.
Poiché ogni tipo di trama ha tipi diversi di aree dirty, esistono metodi per ogni tipo di trama. Le trame 2D usano rettangolo sporco e le trame del volume usano caselle.
- IDirect3DCubeTexture9::AddDirtyRect
- IDirect3DTexture9::AddDirtyRect
- IDirect3DVolumeTexture9::AddDirtyBox
Passando NULL per i parametri pDirtyRect o pDirtyBox per i metodi precedenti espande l'area dirty per coprire l'intera trama.
Ogni metodo di blocco può accettare D3DLOCK_NO_DIRTY_UPDATE, che impedisce qualsiasi modifica allo stato dirty della trama. Per altre informazioni, vedere Locking Resources (Direct3D 9).
Quando sono disponibili altre informazioni sul set reale di aree modificate durante un'operazione di blocco, le applicazioni devono usare D3DLOCK_NO_DIRTY_UPDATE. Si noti che solo un blocco o una copia in una trama sublevel (ovvero senza blocco o copia nel livello superiore) non aggiorna le aree dirty per tale trama. Le applicazioni assumono la stessa responsabilità di aggiornare le aree dirty quando bloccano i livelli inferiori senza bloccare il livello superiore.
Argomenti correlati