Glenn a écrit a écrit :
humm, ça ma l'air intérressant cette histoire de synchro...
comment ça marche cette chose?
|
Le principe est très simple.
Tu sais que l'image sur ton moniteur est formée grace à un canon à électrons qui bombarde des électrons sur le tube. Ce bombardement se fait à une certaine fréquence, en partant en haut à gauche de l'écran et en finissant en bas à droite. Il bombarde donc une ligne horizontale, revient à la ligne suivante, la bombarde, etc...
Arrivé en bas, le canon remonte pour bombarder une nouvelle image.
La fréquence de bombardement est déterminée par le taux de rafraichissement de ton moniteur. Une fréquence de 100 Hz représente 100 images par seconde, une image étant composée d'un cycle de bombardement complet à partir du haut gauche de l'écran vers le bas droite.
Le VBL (Vertical Blank) représente le moment au cours duquel le canon, une fois arrivé en bas à droite de l'écran, remonte en haut à gauche. Pendant ce laps de temps, tu peux basculer l'écran virtuel vers l'écran réél.
En effet, pour exploiter pleinement le VBL, il te faut 2 surfaces de dessin : une surface qui sera visible à l'écran et une autre surface invisible, sur laquelle tu effectueras toutes tes opérations de tracé.
Pendant que le canon balaye l'écran pour tracer l'image présente sur la surface visible à l'écran, tu effectues tes opérations de tracé dans la surface invisible.
Une fois arrivé en bas de l'écran, tu utilises le temps que met le canon pour remonter (VBL) afin de basculer la surface invisible dans la surface visible, qui sera ainsi tracée par le canon, etc...
Le plus difficile est de déterminer le moment ou le canon a atteint le bas droite de l'écran. Ceci se fait en testant des registres internes à la carte VGA, mais il est possible qu'OpenGL te propose une fonction toute faite. Je sais pas du tout, je connais pas OpenGL. Regarde si une fonction du style "WaitVBlank", "WaitRefresh", etc.. est présente
A+
---------------
J'ai un string dans l'array (Paris Hilton)