Questo articolo spiega come azzerare la finestra e
prepararla per il disegno, impostare i colori dell'oggetto da
disegnare, e forza il completamento del disegno. Nessuno di questi
argomenti ha che fare con il disegno in modo diretto, ma ogni
programma che disegna oggetti geometrici deve gestire queste cose.
Azzerare la Finestra
Per disegnare sul computer, ci si comporta come se
si dovesse disegnare su un foglio bianco, e poi si traccia
l'immagine. Su di un computer, la memoria contiene l'ultima immagine
utilizzata per riempire lo schermo, pertanto bisogna azzerarla usando
un colore di sfondo prima di disegnare una nuova scena. Il colore
utilizzato dipende dall'applicazione, per un programma di scrittura
si usa un colore bianco (il colore della carta) prima di tracciare il
testo. Se si sta disegnando una immagine vista nello spazio, il
colore scelto può essere il nero, prima di disegnarne le stelle ed i
pianeti. Alcune volte non è necessario riscrivere l'intera immagine
ma solo alcune parti. A questo punto ci si può chiedere cosa voglia
dire azzerare la finestra, non si potrebbe disegnare un rettangolo
delle stesse dimensioni della stessa? Esiste una operazione più
semplice , in quanto OpenGL semplifica con un comando speciale
dedicato al solo azzeramento della finestra, inoltre su alcune
macchine, l'hardware grafico consiste di buffer multipli contenenti i
colori dei pixel che sono mostrati. Questi ed altri buffer devono
essere ripuliti di tanto in tanto, pertanto è utile possedere un
comando dedicato allo scopo.
Bisogna inoltre sapere che i colori dei pixel sono
immagazzinati nell'hardware grafico come bitplane. Vi sono due modi
per memorizzare, il primo (RGBA), rosso, verde, blu e alfa,
immagazzina i valori direttamente come bitplane. Oppure esiste un
singolo indice di valore che fa riferimento al colore di tabella. Il
colore RGBA è quello comunemente usato. Un esempio di linea di
codice nel quale la finestra viene azzerata con il nero è:
glClearColor(0.0, 0.0, 0.0,
0.0);
glClear(GL_COLOR_BUFFER_BIT);
In questo caso la chiamata a glClearColor() è la stessa di prima, il comando glClearDepth() specifica che il valore di ogni pixel dio profondità deve essere impostato, e il parametro glClear() consiste ora di OR bitwise, di tutti i buffer che devono essere puliti.
La prima linea di codice serve comunicare di
azzerare lo schermo con il nero, il comando successivo ripulisce
l'intera finestra con il colore corrente. Il singolo parametro
glClear() indica quale
buffer di memoria deve essere ripulito. In questo caso vien pulito
solo il buffer del colore, dove viene conservata l'immagine.
Tipicamente, viene impostato il colore una sola volta, all'inizio
dell'applicazione, e l'operazione di pulizia avviene spesso. OpenGL
tiene traccia del colore corrente di pulizia come variabile di stato.
Se bisogna ripulire anche il buffer della profondità dell'immagine s
i usa la sequenza di comandi:
glClearColor(0.0, 0.0, 0.0, 0.0);
glClearDepth(1.0);
glClear(GL_COLOR_BUFFER_BIT |
GL_DEPTH_BUFFER_BIT);
In questo caso la chiamata a glClearColor() è la stessa di prima, il comando glClearDepth() specifica che il valore di ogni pixel dio profondità deve essere impostato, e il parametro glClear() consiste ora di OR bitwise, di tutti i buffer che devono essere puliti.
Nessun commento:
Posta un commento