Bonjour.
J'essaye, sans succes, de convertir une sf::RenderTexture en pointeur de texture, afin de l'afficher comme les autres textures...
renderTexture.clear(sf::Color::Red);
for(vector<EI>::iterator it = vectorEI.begin() ; it != vectorEI.end() ; it ++)
{
renderTexture.draw(*it);
}
renderTexture.display();
EI_test.recoitTexture(renderTexture.getTexture());
Ce qui donnerait ceci pour mon EI (tristement appelée EI, mais c'est trop tard pour changer mon EntiteImage de nom...Ce serait d'ailleurs accorder trop d'importance a ces malades :'( ).
void recoitTexture(const sf::Texture &texture)
{
*m_texture = texture;
}
private:
virtual void draw(sf::RenderTarget& cible, sf::RenderStates states) const
{
states.texture = m_texture;
cible.draw(m_tableauVertex,4,sf::Quads,states);
}
float m_z;
sf::Vertex m_tableauVertex[4];
sf::Texture *m_texture;
plantage. (j'ai aussi des problèmes avec mon debugg, ce qui n'aide pas )...
Ma facon de faire est-elle cohérente?
Réfléchis un peu à ce que tu fais, ne pense pas qu'un code est correct juste parce qu'il compile ;)
void recoitTexture(const sf::Texture &texture)
{
m_texture = &texture;
}
Ta méthode draw à un sf::RenderState : http://www.sfml-dev.org/documentation/2.2-fr/classsf_1_1RenderStates.php profite de ce paramètre pour lui passer la texture et vire ta "méthode" recoitTexture() & ton pointeur.
Mauvais conseil... à ton avis pourquoi est-ce que sf::Sprite et sf::Shape ont toutes deux une fonction setTexture similaire à la sienne ?
Merci pour vos réponses.
J'ai bien essayé :
void recoitTexture(const sf::Texture &texture)
{
m_texture = &texture;
}
mais il me dit un message d'erreur:
"error: invalid conversion from'const sf::Texture*' to sf::Texture*' [~fpermissive]
pourquoi stocker un pointeur ?
Pour trier facilement les images, avec un z order. Ça me permet, en occurrence, de gérer plein d'objet qui vont partager, par exemple, la même texture, et dont leur emplacement dans le jeu va changer (l'un passe devant ou derrière l'autre etc...) .Plutôt que de stocker une véritable texture, lourde de poid, pour chaque objet, autant envoyer l'adresse, non?
Enfin ça me rassure un peu que Laurent n'approuve pas ce conseil...car pour l'instant ca marche très bien.
ps : sympas ton avatar, Cpl.Bator :P
non, c'est des chaines de vertex...
C'est là que je ne comprend pas quand je vois cela :
cible.draw(m_tableauVertex,4,sf::Quads,states);
Un "EI" , c'est donc UN quad autrement dit , un sprite. Pourquoi dans ce cas ne pas faire hérité directement
EI de sf::Sprite ?
là tu ne te demandes pas pourquoi ces classes stockent elles-mêmes leur texture, si ?
Bien sur que non, la question n'est pas là , dans ce contexte je considère sa classe EI comme un sprite , autant en hérité si c'est le cas.