Per alcune implementazioni di OpenGL, inoltre la
routine scambia_i_buffer(), oltre a invertire il buffer di memoria in
disegno e quello visualizzato, aspetta sino a quando il periodo di
rinfresco dello schermo non è concluso, e la schermata non viene
visualizzata. Questa routine permette al nuovo buffer di memoria di
essere visualizzato completamente, partendo dall'inizio. Assumendo
una frequenza di 60 volte al secondo questo significa che il numero
di fotogrammi massimi raggiungibili è di 60 frame per second
(fps), e se tutti i frame sono azzerati in meno di un
sessantesimo di secondo, l'animazione scorre fluidamente. Quel che
può accadere solitamente è la costruzione di un fotogramma è
troppo complessa per essere disegnata in 1/60 di secondo, pertanto il
fotogramma vien mostrato più di una volta. Se il tempo necessario
per calcolare è di 1/45 di secondo, la velocità raggiungibile di 30
fps, la grafica ha un tempo di ozio pari a 1/90 di secondo. Inoltre
il tempo di rinfresco dei monitor è costante, pertanto bisogna
aspettarsi delle conseguenze sulle prestazioni dell'applicazione.
Bisogna valutare attentamente le caratteristiche dell'applicazione in
fase di sviluppo, aggiungere delle componenti può non avere alcuna
conseguenza sino ad un certo punto quando un nuovo componente del
programma costringe il sistema a rallentare da 60 fps a 30 fps.
Inoltre se la complessità della scena è prossima al valore intero
(1/60, 1/30, 1/20) può subire variazioni casuali, le quali causano
una visualizzazione irregolare, fastidiosa agli occhi di un
osservatore. In questo caso è necessario semplificare la scena, in
modo che tutti i frame siano abbastanza veloci, o rallentarli tutti
allo stesso valore. Una gestione sofisticata del frame rate si rende
necessaria in queste applicazioni.
Nessun commento:
Posta un commento