Che cos'è una catena di scambio? (Direct3D 9)

Una catena di scambio è una raccolta di buffer usati per la visualizzazione di fotogrammi all'utente. Ogni volta che un'applicazione presenta un nuovo frame per la visualizzazione, il primo buffer nella catena di scambio prende il posto del buffer visualizzato. Questo processo viene chiamato scambio o capovolgimento.

Una scheda grafica contiene un puntatore a una superficie che rappresenta l'immagine visualizzata nel monitor, denominata buffer anteriore. Man mano che il monitoraggio viene aggiornato, la scheda grafica invia il contenuto del buffer anteriore al monitor da visualizzare. Tuttavia, ciò comporta un problema durante il rendering di grafici in tempo reale. Il cuore del problema è che monitorare le frequenze di aggiornamento sono molto lente rispetto al resto del computer. Le frequenze di aggiornamento comuni vanno da 60 Hz (60 volte al secondo) a 100 Hz. Se l'applicazione aggiorna il buffer anteriore mentre il monitor si trova al centro di un aggiornamento, l'immagine visualizzata verrà tagliata in metà con la metà superiore della visualizzazione contenente l'immagine precedente e la metà inferiore contenente la nuova immagine. Questo problema viene definito strappo.

Direct3D implementa due opzioni per evitare la rottura:

  • Opzione per consentire solo gli aggiornamenti del monitoraggio nell'operazione di ritracciazione verticale (o sincronizzazione verticale). Un monitor aggiorna in genere la sua immagine spostando un pin chiaro orizzontalmente, zigzagging dall'alto a sinistra del monitor e terminando in basso a destra. Quando il pin chiaro raggiunge il fondo, il monitor rilibera il pin chiaro spostandolo indietro verso sinistra in modo che il processo possa ricominciare. Questa ricalibrazione viene chiamata sincronizzazione verticale. Durante una sincronizzazione verticale, il monitoraggio non disegna nulla, quindi qualsiasi aggiornamento al buffer anteriore non verrà visualizzato fino a quando il monitoraggio non inizia di nuovo a disegnare. La sincronizzazione verticale è relativamente lenta; tuttavia, non abbastanza lento per eseguire il rendering di una scena complessa durante l'attesa. Ciò che è necessario per evitare il strappo e essere in grado di eseguire il rendering di scene complesse è un processo denominato buffering indietro.
  • Opzione per usare una tecnica denominata buffering indietro. Il buffer back è il processo di disegno di una scena in una superficie fuori schermo, denominata buffer indietro. Si noti che qualsiasi superficie diversa dal buffer anteriore viene chiamata superficie fuori schermo perché non viene mai visualizzata direttamente dal monitor. Usando un buffer indietro, un'applicazione ha la libertà di eseguire il rendering di una scena ogni volta che il sistema è inattiva ,ovvero non sono in attesa di messaggi di Windows, senza dover considerare la frequenza di aggiornamento del monitoraggio. Il buffer indietro comporta un'ulteriore complicazione di come e quando spostare il buffer indietro nel buffer anteriore.

Il processo di spostamento del buffer indietro nel buffer anteriore è denominato capovolgimento della superficie. Poiché la scheda grafica usa semplicemente un puntatore a una superficie per rappresentare il buffer anteriore, una semplice modifica del puntatore è tutto ciò che è necessario per impostare il buffer indietro sul buffer anteriore. Quando un'applicazione chiede a Direct3D di presentare il buffer indietro al buffer anteriore, Direct3D semplicemente "capovolge" i due puntatori di superficie. Il risultato è che il buffer indietro è ora il nuovo buffer anteriore e il vecchio buffer front è il nuovo buffer indietro. Viene richiamato un capovolgimento di superficie ogni volta che un'applicazione chiede al dispositivo Direct3D di presentare il buffer indietro; Tuttavia, Direct3D può essere configurato per accodare le richieste fino a quando non si verifica una sincronizzazione verticale. Questa opzione viene definita intervallo di presentazione del dispositivo Direct3D. Si noti che i dati nel nuovo buffer back potrebbero non essere riutilizzabili, a seconda del modo in cui un'applicazione specifica il modo in cui Direct3D deve gestire il capovolgimento della superficie. Il capovolgimento della superficie è fondamentale nei software multimediale, animazione e gioco; equivale al modo in cui è possibile eseguire l'animazione con un pad di carta. In ogni pagina, l'artista modifica leggermente le figure, in modo che quando si capovolge rapidamente tra fogli, il disegno viene animato.

Superfici Direct3D

Capovolgimento delle superfici (Direct3D 9)