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

Auteur Sujet: [Résolu]Mauvaise utilisation des vertex arrays ?  (Lu 1397 fois)

0 Membres et 2 Invités sur ce sujet

Devdix

  • Newbie
  • *
  • Messages: 2
    • Voir le profil
[Résolu]Mauvaise utilisation des vertex arrays ?
« le: Septembre 06, 2014, 12:32:18 am »
Bonjour

J'ai essayé de programmer avec les vertex arrays car d'après pas mal de monde c'est plus rapide quand on veut afficher à tas d'objets.

void Tile::appendTile(int posX, int posY)
{
    if (!textureTileset.loadFromFile("Ressources/Tuile.png"))
        std::cout << "Error Loading" << std::endl;

    tiles.setPrimitiveType(sf::Quads);

    vertex.position = sf::Vector2f(posX * TILESIZE, posY * TILESIZE);
    vertex.texCoords = sf::Vector2f(128,0);
    tiles.append(vertex);

    vertex.position = sf::Vector2f(posX * TILESIZE + TILESIZE, posY * TILESIZE);
    vertex.texCoords = sf::Vector2f(192,0);
    tiles.append(vertex);

    vertex.position = sf::Vector2f(posX * TILESIZE + TILESIZE, posY * TILESIZE + TILESIZE);
    vertex.texCoords = sf::Vector2f(192,64);
    tiles.append(vertex);

    vertex.position = sf::Vector2f(posX * TILESIZE, posY * TILESIZE + TILESIZE);
    vertex.texCoords = sf::Vector2f(128,64);
    tiles.append(vertex);
}

Voici comment j'utilise les vertex arrays mais par exemple quand je fais appel à cette fonction et que je demande d'ajouter 4 tuiles il faut presque 5 secondes pour les afficher donc si je veux en afficher 100 ça va être assez problématique ...
Et pourtant tout le monde dit que c'est plus performant donc je pense mal m'y prendre ...
Si je comprends bien en faisant append ça ajoute ma vertice au vertex array et donc j'ai qu'un seul appel à draw ?
« Modifié: Septembre 06, 2014, 01:07:06 pm par Devdix »

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : Mauvaise utilisation des vertex arrays ?
« Réponse #1 le: Septembre 06, 2014, 01:08:31 am »
Ça doit être parce que tu recharges inutilement ta texture textureTileset à chaque fois que tu veux ajouter une tile.
C'est pas non plus la peine définir le type de primitive à chaque fois non plus s'il ne change pas. (mais je doute que ça soit une grosse opération ça :p contrairement à un chargement de texture)

Devdix

  • Newbie
  • *
  • Messages: 2
    • Voir le profil
Re : Mauvaise utilisation des vertex arrays ?
« Réponse #2 le: Septembre 06, 2014, 01:06:55 pm »
Alors en effet ça ne va pas le faire si je recharge la texture à chaque fois ... ça ira beaucoup mieux quand je la chargerai une seule fois dans le constructeur ;)

Merci beaucoup G.