Bonjour!
Me revoilà aujourd'hui pour reparler de VertexArray ::)^
Sachant que je fais du mapping isometrique, je dois changer l'algorithme de définitions des sommets de chaque quad. J'ai fait cela:
quad[0].position = sf::Vector2f((m_floorSize)*(j-i), (m_floorSize*(j+i)/2));
quad[1].position = sf::Vector2f((m_floorSize)*(j-i+1), (m_floorSize*(j+i)/2));
quad[2].position = sf::Vector2f((m_floorSize)*(j-i+1), (m_floorSize*(j+i+2)/2));
quad[3].position = sf::Vector2f((m_floorSize)*(j-i), (m_floorSize*(j+i+2)/2));
quad[0].texCoords = sf::Vector2f(tu * m_tileSize.x, tv * m_tileSize.y);
quad[1].texCoords = sf::Vector2f((tu + 1) * m_tileSize.x, tv * m_tileSize.y);
quad[2].texCoords = sf::Vector2f((tu + 1) * m_tileSize.x, (tv + 1) * m_tileSize.y);
quad[3].texCoords = sf::Vector2f(tu * m_tileSize.x, (tv + 1) * m_tileSize.y);
J'ai mis entre les crochets de définition des positions l'algorithme de transformation de coord. cartesiennes en isométrique. Mais je ne comprend pas pourquoi j'obtiens ce résultat!
Merci d'avance.
Oui pardon :p
void Map::setConfiguration(const int *configuration, unsigned int width, unsigned int height)
{
m_height = height;
m_width = width;
m_vertices.setPrimitiveType(Quads);
m_vertices.resize(m_width*m_height*4);
sf::Vertex *quad = &m_vertices[0];
sf::Vertex *quad2 = &m_vertices[1];
quad[0].position = Vector2f(0, 0);
quad[1].position = Vector2f(50, 0);
quad[2].position = Vector2f(50, 56);
quad[3].position = Vector2f(0, 56);
quad[0].texCoords = Vector2f(0, 0);
quad[1].texCoords = Vector2f(50, 0);
quad[2].texCoords = Vector2f(50, 56);
quad[3].texCoords = Vector2f(0, 56);
quad2[0].position = Vector2f(0, 0);
quad2[1].position = Vector2f(50, 0);
quad2[2].position = Vector2f(50, 56);
quad2[3].position = Vector2f(0, 56);
quad2[0].texCoords = Vector2f(0, 0);
quad2[1].texCoords = Vector2f(50, 0);
quad2[2].texCoords = Vector2f(50, 56);
quad2[3].texCoords = Vector2f(0, 56);
}
Bien que je sais que c'est inutile de superposer deux quads, je simplifie au max mon problème en faisant cela. Je pense que si j'en empile 2 le résultat devrait être le même qu'un seul quad affiché mais voilà ce que ça me donne [voir fichier joint] . C'est comme si on n'avait pas défini le point x0y1...
Voilà merci encore