Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Tuto vertex array : point obscure  (Lu 2031 fois)

0 Membres et 1 Invité sur ce sujet

unitedelite

  • Jr. Member
  • **
  • Messages: 61
    • Voir le profil
Tuto vertex array : point obscure
« 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 ^^
« Modifié: Juin 01, 2013, 06:41:44 pm par unitedelite »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Tuto vertex array : point obscure
« Réponse #1 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.
« Modifié: Juin 01, 2013, 06:51:58 pm par Laurent »
Laurent Gomila - SFML developer

unitedelite

  • Jr. Member
  • **
  • Messages: 61
    • Voir le profil
Re : Tuto vertex array : point obscure
« Réponse #2 le: Juin 01, 2013, 06:51:22 pm »
ah effectivement, maintenant ça parais logique ^^

merci pour cette éclaircissement ^^

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Tuto vertex array : point obscure
« Réponse #3 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.

 

anything