Utilisation des surfaces
Utiliser les surfaces
En principe, on ne dessine jamais directement sur une surface primaire. D'abord pour éviter un effet de scintillement très désagréable.
Bon maitenant que les choses sont claires, il faut donc dessiner dans la backsurface (qui, pour rappel, pourra être une simple surface offscreen si l'application est en mode fenêtré):
- Utiliser les pinceaux ou les fonctions d'affichage de texte
- Charger un bitmap sur une surface
- Soit en dessinant directement dans la surface
- lock(), unlock(),
- récupération d'informations sur la surface,
- utiliser le langage machine pour dessiner
- Soit en utilisant les fonctions de blitting de DirectDraw
- Présentation de Blt(), bltFast, la cle de couleur
- Dessiner/remplir une surface grâce au blitter
- Copier un block d'une surface vers une autre surface
- Gérer une couleur transparente
Eviter les débordements grâce au clipper
Lors de la création d'une surface primaire, vous recevez une interface qui représente l'intégralité de la surface de l'écran, même si l'on ne veut dessiner que dans la zone délimitée par la fenêtre de l'application. Si nous nous trouvons en mode fenêtré, la surface primaire doit être positionnée sur la fenêtre. Si ce n'était pas le cas, nous dessinerions n'importe où, et Windows ne verrait alors pas les fenêtres éventuellement altérées. Donc celles-ci ne se restaureraient pas ! Pour éviter tous ces désagrément, nous utiliserons le clipper.
Faire un flipping
Le flipping consiste à échanger les pointeurs d'une surface primaire et d'une back buffer lorsque le faisceau d'électrons retourne au coin supérieur gauche de l'écran. Il n'y a ainsi pas besoin de recopier le contenu d'un back buffer vers un primary buffer d'où un énorme gain de temps. Cela implique aussi que ces buffers se trouvent gérés par la carte vidéo...Sinon cela voudrait dire un transfert de données de la mémoire de l'ordinateur vers celle de la carte vidéo.
Le flipping ne pourra donc ce faire que lorsque votre application est en plein écran. Dans le cas d'un mode fénêtré, cette méthode ne sera hélas pas utilisable. Il faudra donc utiliser le blitter.
- Le flipping et rappel création de surface pour la gestion de n back buffer.