2010-11-08 24 views
3

En utilisant Open GL ES 2.0, je veux créer une grande grille de carrés, où chaque carré peut prendre une certaine couleur comme spécifié par un fichier de définition. Donc, ce n'est pas un damier simple de carrés noirs et blancs seulement ...
Quelle est la meilleure façon de le faire afin d'éviter les artefacts?Comment créer une grille quadrillée multicolore dans OpenGL ES 2.0?

Merci à l'avance

Répondre

2

Il n'y a rien qui causera implicitement des artefacts lors de l'élaboration d'une grille de carrés. Il n'y a pas de problèmes inhérents de z-fighting, de profondeur ou de transparence avec le dessin comme décrit dans cette question.

Dans l'application, créez un tableau de sommets avec deux attributs (position, couleur) pour chaque sommet. Pour chaque carré de la grille, vous aurez besoin de 4 sommets. Cela va décrire 2 triangles indépendants qui composent chaque carré de la grille. Évitez d'utiliser des bandes triangulaires car vous ne souhaitez pas que l'attribut de couleur soit partagé ou interpolé entre des carrés de grille adjacents.

Ainsi, votre tableau de vertex en mémoire sera:

square0Pos0 
color0 
square0Pos1 
color0 
square0Pos2 
color0 
square0Pos3 
color0 
square1Pos0 
color1 
... 

Créer une simple paire de shaders pass-through qui envoie la couleur de sommet par un variant du fragment shader. La couleur du fragment définit simplement la couleur de sortie à la valeur de la variable.

Si vous positionnez les positions de la grille de -1,0 à 1,0, vous n'avez même pas besoin d'ajouter d'uniformes de transformation ou de logique de shader correspondante. Effectuez un seul appel de dessin pour dessiner votre tableau de sommets avec glDrawArrays(GL_TRIANGLES, ...).