Forum de la communauté SFML

Aide => Général => Discussion démarrée par: unitedelite le Juin 01, 2013, 05:39:39 pm

Titre: Tuto vertex array : point obscure
Posté par: unitedelite le Juin 01, 2013, 05:39:39 pm
Salut a tous,

Après avoir lu le tuto sur les vertex array (d'ailleurs petite faute de frappe : "Chaque triangle pratage ses deux derniers vertex avec le suivant.  " )  et arrivé a l'exemple j'ai quelques difficulté a comprendre certaine chose :

 m_vertices.resize(width * height * 4);
Pourquoi multiplier par 4 ?

int tileNumber = tiles[i + j * width];

                // on en déduit sa position dans la texture du tileset
                int tu = tileNumber % (m_tileset.getSize().x / tileSize.x);
                int tv = tileNumber / (m_tileset.getSize().x / tileSize.x);

pourquoi multiplié par la largeur pour obtenir la case du tableau ?

  sf::Vertex* quad = &m_vertices[(i + j * width) * 4];

La ont prend un pointeur de la zone du vertex a modifier et ont en fait un sous-vertex ? (en gros ont modifie Quad par Quad chaque partie du vertex principale ?)

merci pour tout éclaircissement ^^
Titre: Re : Tuto vertex array : point obscure
Posté par: Laurent le Juin 01, 2013, 06:48:24 pm
Citer
Pourquoi multiplier par 4 ?
Parce qu'il faut 4 vertex pour faire chaque tile (les tiles sont des rectangles).

Citer
pourquoi multiplié par la largeur pour obtenir la case du tableau ?
Là on utilise un tableau à une dimension dans lequel on simule deux dimensions. Du coup les "lignes" se succèdent, donc pour passer d'une colonne il faut incrémenter l'indice d'une ligne toute entière. Fais-toi un dessin, tu comprendras mieux.

Citer
Ensuite je connais pas bien l'utilisation du modulo ( il indique le restant d'une division), mais je comprend pas a quoi ça sert d'obtenir tu et tv de cette manière
Là c'est l'opération inverse de ce que j'ai expliqué juste au-dessus : on obtient deux dimensions (ligne et colonne) à partir d'une seule. Y a pas grand chose à expliquer, fais-toi un dessins et essaye de comprendre le calcul.

Citer
La ont prend un pointeur de la zone du vertex a modifier et ont en fait un sous-vertex ? (en gros ont modifie Quad par Quad chaque partie du vertex principale ?)
Y a pas de sous-vertex, un vertex c'est un point. Là je prends un pointeur vers les 4 vertex à modifier comme ça j'ai juste à faire +1, +2 et +3 au lieu de recalculer complètement chaque indice. C'est juste une question de style, à ce niveau tu peux faire comme tu veux. Y a rien de compliqué, c'est juste un peu d'arithmétique pour se simplifier les accès aux éléments du tableau.
Titre: Re : Tuto vertex array : point obscure
Posté par: unitedelite le Juin 01, 2013, 06:51:22 pm
ah effectivement, maintenant ça parais logique ^^

merci pour cette éclaircissement ^^
Titre: Re : Tuto vertex array : point obscure
Posté par: Lolilolight le Juin 02, 2013, 07:02:22 pm
Moi aussi j'avais des difficultés avec mon moteur en 2D iso mais en faisant des dessins on comprend mieux.