Blocco delle risorse (Direct3D 9)

Il blocco di una risorsa significa concedere l'accesso della CPU all'archiviazione. Le opzioni di blocco seguenti sono definite per le risorse:

  • D3DLOCK_DISCARD
  • D3DLOCK_READONLY
  • D3DLOCK_NOOVERWRITE
  • D3DLOCK_NOSYSLOCK
  • D3DLOCK_NO_DIRTY_UPDATE

Per informazioni dettagliate sui flag di blocco e sul modo in cui si riferiscono a risorse specifiche, vedere le pagine di riferimento nei singoli metodi di blocco delle risorse. Gli sviluppatori di applicazioni devono notare che i flag D3DLOCK_DISCARD, D3DLOCK_READONLY e D3DLOCK_NOOVERWRITE sono solo hint. Il tempo di esecuzione non verifica che le applicazioni seguono le funzionalità specificate da questi flag. Un'applicazione che specifica D3DLOCK_READONLY, ma quindi scrive nella risorsa deve prevedere risultati non definiti. In generale, il funzionamento dei flag di blocco, inclusi i flag di utilizzo di blocco, non è garantito il funzionamento nelle versioni successive e può comportare una significativa penalità delle prestazioni.

Un'operazione di blocco è seguita da un'operazione di sblocco. Ad esempio, dopo aver bloccato una trama, l'applicazione successivamente rilinquise l'accesso diretto alle trame bloccate sbloccandole. Oltre a concedere l'accesso al processore, tutte le altre operazioni che coinvolgono tale risorsa vengono serializzate per la durata di un blocco. Solo un singolo blocco per una risorsa è consentito, anche per le aree non sovrapposte e nessuna operazione di acceleratore su una superficie può essere in corso mentre un'operazione di blocco è in sospeso su tale superficie.

Ogni interfaccia delle risorse include metodi per bloccare i buffer contenuti. Ogni risorsa trama può anche bloccare una parte secondaria di tale risorsa. Le risorse 2D (superfici) consentono il blocco di sotto rettangoli e le risorse del volume consentono il blocco di sotto-volumi o caselle. Ogni metodo lock restituisce una struttura che contiene un puntatore al backup della risorsa di archiviazione e i valori che rappresentano le distanze tra righe o piani di dati, a seconda del tipo di risorsa. Per informazioni dettagliate, vedere gli elenchi di metodi per le interfacce delle risorse. Il puntatore restituito punta sempre al byte superiore sinistro nelle aree secondarie bloccate.

Quando si usano buffer di indice e vertex, è possibile eseguire più chiamate di blocco; È tuttavia necessario assicurarsi che il numero di chiamate di blocco corrisponda al numero di chiamate di sblocco.

I pixel dell'archivio DXTn in blocchi con codifica 4x4 e possono essere bloccati solo su limiti 4x4.

Risorse Direct3D