Condividi tramite


Front, Back e Altri buffer

OpenGL archivia e modifica i dati pixel in un framebuffer. Il framebuffer è costituito da un set di buffer logici: buffer di colore, profondità, accumulo e stencil. Il buffer dei colori è costituito da un set di buffer logici; questo set può includere un buffer in primo piano, un front-right, un back-left, un back-right e un certo numero di buffer ausiliari. Un particolare formato di pixel o un'implementazione OpenGL potrebbe non fornire tutti questi buffer. Ad esempio, la versione corrente dell'implementazione di Microsoft di OpenGL in Windows non supporta immagini stereoscopiche, quindi un formato pixel non può avere buffer di colore sinistro e destro. Inoltre, la versione corrente non supporta buffer ausiliari. Per altre informazioni sui buffer OpenGL e sulle funzioni OpenGL su cui operano, vedere il manuale di riferimento openGL e la guida alla programmazione OpenGL .

L'implementazione di OpenGL in Windows supporta il doppio buffer delle immagini. Si tratta di una tecnica in cui un'applicazione disegna i pixel in un buffer fuori schermo e quindi, quando l'immagine è pronta per la visualizzazione, copia il contenuto del buffer fuori schermo in un buffer su schermo. Il doppio buffer consente modifiche uniformi alle immagini, particolarmente importanti per le immagini animate.

Sono disponibili due buffer a colori per le applicazioni che usano il doppio buffer: un buffer anteriore e un buffer nascosto. Per impostazione predefinita, i comandi di disegno vengono indirizzati al buffer nascosto (buffer fuori schermo), mentre il buffer anteriore viene visualizzato sullo schermo. Quando il buffer fuori schermo è pronto per la visualizzazione, chiama SwapBufferse Windows copia il contenuto del buffer fuori schermo nel buffer sullo schermo.

L'implementazione generica usa una bitmap indipendente dal dispositivo (DIB) come buffer nascosto e lo schermo viene visualizzato come buffer anteriore. I dispositivi hardware e i driver possono usare approcci diversi.

Il buffer doppio è una proprietà in formato pixel. Per richiedere il doppio buffering per un formato pixel, impostare il flag PFD_DOUBLEBUFFER nella struttura di dati PIXELFORMATDESCRIPTOR in una chiamata a ChoosePixelFormat.

La funzione principale OpenGL, glDrawBuffer, seleziona i buffer per la scrittura e la cancellazione.

funzioni buffer