Condividi tramite


Catene di scambio

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

Una scheda grafica mantiene un puntatore a una superficie che rappresenta l'immagine visualizzata sul monitor, denominata buffer anteriore. Quando il monitor viene aggiornato, la scheda grafica invia il contenuto del buffer anteriore al monitor da visualizzare. Tuttavia, questo comporta un problema di "strappo" quando si esegue il rendering di grafica in tempo reale. Il cuore del problema è che le frequenze di aggiornamento del monitor 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 a metà con la metà superiore della visualizzazione contenente l'immagine precedente e la metà inferiore contenente la nuova immagine. Questo problema viene definito strappo.

Evitare lo strappo

Direct3D implementa due opzioni per evitare lo strappo:

  • Opzione per consentire solo gli aggiornamenti del monitoraggio nell'operazione di ritracciamento verticale (o sincronizzazione verticale). Un monitor aggiorna in genere l'immagine spostando un pin di luce in orizzontale, zigzagando dall'alto a sinistra del monitor e terminando in basso a destra. Quando il pin di luce raggiunge la parte inferiore, il monitor ricalibra il pin di luce spostandolo in alto a sinistra in modo che il processo possa ricominciare.

    Questa ricalibrazione è denominata sincronizzazione verticale. Durante una sincronizzazione verticale, il monitor non disegna nulla, quindi qualsiasi aggiornamento al buffer anteriore non verrà visualizzato fino a quando il monitor non riprende 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 la disinstallazione e poter eseguire il rendering di scene complesse è un processo denominato buffering nascosto.

  • Opzione per usare una tecnica denominata buffering nascosto. Il buffer nascosto è il processo di disegno di una scena in una superficie fuori schermo, denominata appunto in tal modo. Qualsiasi superficie diversa dal buffer anteriore viene denominata superficie fuori schermo perché non viene mai visualizzata direttamente dal monitor.

    Usando un buffer nascosto, un'applicazione ha la libertà di eseguire il rendering di una scena ogni volta che il sistema è inattivo (ovvero non sono in attesa messaggi di Windows) senza dover prendere in considerazione la frequenza di aggiornamento del monitor. Il buffering nascosto comporta un'ulteriore complicazione di come e quando spostarlo nel buffer anteriore.

Capovolgimento della superficie

Il processo di spostamento del buffer nascosto nel buffer anteriore è detto 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 nascosto sul buffer anteriore. Quando un'applicazione chiede a Direct3D di presentare il buffer nascosto al buffer anteriore, Direct3D "capovolge" semplicemente i due puntatori di superficie. Il risultato è che il buffer nascosto è ora il nuovo buffer anteriore e il buffer anteriore è il nuovo buffer nascosto.

Un capovolgimento della superficie viene richiamato ogni volta che un'applicazione chiede al dispositivo Direct3D di presentare il buffer nascosto; 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. I dati nel nuovo buffer nascosto 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 per il software multimediale, l'animazione e il gioco; equivale al modo in cui puoi fare animazione con un foglio di carta. In ogni pagina, l'artista cambia leggermente le figure, in modo che quando si capovolge rapidamente tra fogli, il disegno appare animato.

Dispositivi