Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: Develog le Août 06, 2014, 03:33:18 pm

Titre: VertexArray & Append
Posté par: Develog le Août 06, 2014, 03:33:18 pm
Bonjour,

J'essaie d'utiliser la fonction append de VertexArray pour optimiser mon programme.
Mais j'ai du mal à comprendre comment cela marche ...

Quand on fait : vertexarray.append(vertex) 
On ajoute une vertex à notre vertexarray n'est ce pas ?

Actuellement j'ai ce code :

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

    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);
}
 


Où tiles est un vertexarray et vertex une vertex

Mais à l'écran je n'ai que des points quand je fais appel à cette fonction ... Faut il faire quelque chose par la suite pour lié les vertex entre elles ?


Merci d'avance
Titre: Re : VertexArray & Append
Posté par: G. le Août 06, 2014, 04:19:02 pm
http://www.sfml-dev.org/tutorials/2.1/graphics-vertex-array-fr.php#les-types-de-primitives
J'imagine que ce que tu veux c'est sf::Quads
Titre: Re : VertexArray & Append
Posté par: Develog le Août 06, 2014, 04:39:39 pm
Oui en effet mais là je m'aide du code source de Laurent pour le tilemap que voici : https://github.com/SFML/SFML/wiki/Source:-TileMap

Et à aucun moment il défini que c'est un quad ?
Titre: Re : VertexArray & Append
Posté par: Laurent le Août 06, 2014, 05:02:56 pm
C'est le wiki, n'importe qui peut y poster des articles. Base toi plutôt sur les exemples, tutoriels et doc officiels pour commencer.

Mais sinon, dans le code source que tu cites, il y a bien un sf::Quads. Il est bien caché, c'est tout ;)
Titre: Re : VertexArray & Append
Posté par: Develog le Août 06, 2014, 05:52:31 pm
Justement je me permet de dire qu'il manque peut être un exemple pour la fonction append. Les seuls exemples que j'ai trouvé sur internet étaient des erreurs ^^
Est ce que vous pouvez me donner un lien où c'est bien expliqué ou même un exemple concret ? s'il vous plait :)

Et je vais partir à la chasse du sf::Quads

Merci de votre aide !
Titre: Re : VertexArray & Append
Posté par: Laurent le Août 06, 2014, 06:17:01 pm
Il n'y a rien à expliquer à propos d'e la fonction append, elle ajoute juste un élément au tableau de vertex. Si les autres exemples utilisent resize ou autre, c'est pareil. Au final tu as un tableau avec un certain nombre de vertex dedans, ce qui est important à comprendre c'est comment utiliser ce tableau pour dessiner ou autre.

// ça...
sf::VertexArray va;
va.setPrimitiveType(sf::Quads);
va.append(sf::Vertex(...));
va.append(sf::Vertex(...));

// ...c'est pareil que...
sf::VertexArray va(sf::Quads);
va.resize(2);
va[0] = sf::Vertex(...);
va[1] = sf::Vertex(...);

// ...ou encore...
sf::VertexArray va(sf::Quads, 2);
va[0] = sf::Vertex(...);
va[1] = sf::Vertex(...);

Citer
Et je vais partir à la chasse du sf::Quads
Ctrl+F est ton ami...
Titre: Re : VertexArray & Append
Posté par: Develog le Août 06, 2014, 06:22:30 pm
Merci beaucoup ;)
C'est vrai qu'on a pas besoin d'explication ...
Du coup je n'ai pas eu besoin du Ctrl + F, j'ai trouvé grâce à votre aide !

Merci Laurent !!