Introduction :

Si vous en êtes arrivé à l'étape précédente, dans la réalisation de votre moteur Voxel, c'est à dire, dessiner tous les blocks composant un chunk. Vous avez certainement du faire l'essai d'augmenter le nombre de block qui compose le chunk, et par la même occasion, voir les performances dégringoler.

Pour palier à cela, il y a 2 choses à faire :
- Ne pas afficher les polygones inutiles
- Basculer la gestion de l'affichage en VBO, afin que ce soit la carte graphique qui s'occupe de créer les polygones à votre place

C'est sur le premier point (enfin une partie) que va porter sur tutoriel.

Un peu de théorie :

Réaliser cet exemple simple, en paramétrant le chunk pour qu'il fasse 1 bloc de coté et 2 blocs de haut, en affichage filaire, vous obtenez ceci :

   

Sur la seconde image, j'ai mis en évidence une face du cube du dessous qui est dessiné, alors qu'elle est collée à la face du cube du dessus. il est donc tout à fait inutile de dessiner les faces des cubes qui sont collés.

Un peu de pratique :

Dans le programme, j'ai donc modifié la méthode creerMesh de la classe chunk, afin de vérifier si la face qui sera dessinée n'est pas collée à la face du cube adjacent. Si c'est le cas, la face n'est pas dessinée.

J'ai également modifié l'affichage des FPS, afin que cela soit bien plus visible.

>>>> Récupérer le projet

- Clic droit + déplacement souri : Déplacement autour du cube
- Molette souris : Zoom
- Touche M : Changement de mode d'affichage
- Touche R : activation aléatoire des blocks
- Touche Q : quitter

Dans le prochain tutoriel, nous verrons la seconde optimisation d'affichage, qui est nettement plus complexe que celle que l'on vient de voir. En effet, il s'agit du merge de polygone, afin de créer un seul rectangle quant plusieurs rectangles de même type sont côte à côte.

Captures d'écran :