Bonjour.
J'ai quelques problèmes avec VertexArray. Lorsque je crée une nouvelle image dans un objet, et que je lui change ses coordonnées de vertex lors du jeu, il plante. Pourtant, j'ai crée avant cela un vector du même objet, qui fonctionne à merveille dans le même cas...J'ai beau tourner la situation dans tous les sens...je me retrouve avec un message d'erreur dès que j'essaye d'animer l'image et de lui envoyer de nouvelles coordonnées. Alors que cette même image, s'affiche bien à la base.
Voici mon entitée d'image, qui jusque là marche bien (notez que j'ai essayé d'utiliser VertexArray *ptrVertex en pointeur, comme avec la texture, mais sans résultat...est-ce normal?)
mon entitée image:
class EntiteImage : public sf::Drawable
{
public:
friend struct MonFoncteur;
int value;
virtual void recoitVertexArray(sf::VertexArray vertexArray)
{
m_vertexArray = vertexArray;
}
void recoitVertexArrayEtTexture( sf::VertexArray vertexArray, sf::Texture *texture)
{
m_vertexArray = vertexArray;
m_texture = texture;
}
void recoiZ(float z)
{
m_z = z;
}
protected:
virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const
{
states.texture = m_texture;
target.draw(m_vertexArray, states);
}
float m_z;
sf::VertexArray m_vertexArray;
sf::Texture *m_texture;
};
Voici le code utilisé dès que j'active l'animation ainsi: (ca marchait jusque là pour toutes les images)
void ImageAnime::recoitTemps(Controles *controles)
{
if(controles->renvoiTemps())
{
m_compteurX++;
}
if (m_compteurX >= m_tailleTexture/m_tailleImage)
{
m_compteurX = 0;
m_compteurY++;
}
if(m_compteurY >=m_tailleTexture/m_tailleImage)
{
m_compteurY =0;
}
m_vertexArrayRelais.setPrimitiveType(sf::Quads);
m_vertexArrayRelais.resize(4);
m_vertexArrayRelais[0] = sf::Vector2f (m_x,m_y);
m_vertexArrayRelais[1] = sf::Vector2f (m_x+m_tailleImage,m_y);
m_vertexArrayRelais[2] = sf::Vector2f (m_x+m_tailleImage,m_y+m_tailleImage);
m_vertexArrayRelais[3] = sf::Vector2f (m_x,m_y+m_tailleImage);
m_vertexArrayRelais[0].texCoords = sf::Vector2f (m_compteurX*m_tailleImage , m_compteurY*m_tailleImage );
m_vertexArrayRelais[1].texCoords = sf::Vector2f (m_compteurX*m_tailleImage + m_tailleImage , m_compteurY*m_tailleImage );
m_vertexArrayRelais[2].texCoords = sf::Vector2f (m_compteurX*m_tailleImage + m_tailleImage , m_compteurY*m_tailleImage + m_tailleImage );
m_vertexArrayRelais[3].texCoords = sf::Vector2f (m_compteurX*m_tailleImage , m_compteurY*m_tailleImage + m_tailleImage );
m_entiteImage.recoitVertexArray(m_vertexArrayRelais);
m_entiteImage.recoiZ(m_y+m_tailleTexture/2);
}
et enfin, le message d'erreur du débug:
In sf::RenderTarget::draw (this=0x28fc70, vertices=0x943970, vertexCount=4, type=sf::Quads, states=...) at D:\developpement\sfml\sfml
Voila. Bien sur, je continue a chercher de mon côté jusqu'a trouver une solution. Cependant peut être avez vous une idée sur la provenance de ce problème qui semble venir de la SFML...
Merci