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
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(...);
Et je vais partir à la chasse du sf::Quads
Ctrl+F est ton ami...