9.1 Introduction

Comme vous l'avez sans doute constater, si vous avez fait des tests, on ne s'en sort pas trop mal en réduisant le nombre d'images par seconde, et d’ailleurs j'en profite pour vous dire une chose importante :

Il est complètement absurde de faire un programme qui affiche plus de 30 images par secondes !!!

Bien, il faut reconnaître que, même si ce procédé limite énormément l'utilisation du processeur, la chose qui nous prend le plus de temps, c'est l'affichage.

Jusqu'à maintenant on passe notre temps a rappeler a chaque boucle toutes les fonctions d'affichage définis (glBegin(),glEnd() ...). Donc si on se met à la place de l'ordinateur, et que l'on exécute le programme pas à pas on obtient ceci :

  • Processeur : et, la carte graphique, affiche moi un point à tel endroit.
  • Le port PCI : je transmet.
  • La carte graphique : ça y est, j'ai affiché le point que tu m'as demandé (oui les composants d'un ordinateur se tutoies).
  • Le port PCI : je transmet.
  • Processeur : est ce que tu peux m'afficher un autre point a tel autre endroit.
  • Le port PCI : je transmet.
  • La carte graphique : ça y est, j'ai affiché le point que tu m'as demandé
  • Le port PCI : je transmet.
  • L'utilisateur : je me tire, c'est trop long.

Tous ceci se fait très vite bien sur, mais quand vous avez des millions de points à afficher (enfin des dizaines de millions), ça peut finir par être long, voire très long. L'autre soucis est que vous avez une carte graphique qui a sa propre mémoire, et vous ne l'utilisez pas.

Je vous propose un autre dialogue :

  • Processeur : et la carte graphique, tout au long du programme il va falloir afficher tout ces points et l'ensemble de ces points aura pour nom monde.
  • Le port PCI : je transmet. (Il faut reconnaître qu'il ne fait pas grand chose d'autre.)
  • La carte graphique : c'est en mémoire.
  • Le port PCI : je transmet.
  • Processeur : affiche moi monde.
  • Le port PCI : je transmet.
  • Processeur : affiche moi monde.
  • Le port PCI : je transmet.
  • Processeur : affiche moi monde.
  • Le port PCI : je transmet.
  • Processeur : affiche moi monde.
  • Le port PCI : je transmet.
  • Processeur : affiche moi monde.
  • Le port PCI : je transmet.
  • Processeur : affiche moi monde

Il faut quand même reconnaître que l'on utilise dans ce cas la mémoire de la carte graphique, ce qui permet d'initialiser une bonne fois pour toutes ce qu'on veut afficher et de rappeler juste le monde déjà calculé. Ce qui nous fait qu'un seule appel à la carte graphique par cycle du programme, comme ça le port PCI ralentit moins (enfin on ne peut pas plus).

C'est trop classe, comment on fait ?

Suivez le guide.