Bonjour, je souhaiteras charger une texture via un manager puis donner l'adresse de cette texture au boutons que va gérer mon manager aussi. Le problème c'est que je ne vois pas du tout comment faire !
J'ai déjà fait ça
class Button : public sf::Drawable, public sf::Transformable
{
public:
Button( sf::Texture *texture ) : b_array(sf::Points, 4)
{
b_texture = texture;
unsigned int x{texture->getSize().x};
unsigned int y{texture->getSize().y};
b_array[0].position = sf::Vector2f(0,0);
b_array[1].position = sf::Vector2f(x,0);
b_array[2].position = sf::Vector2f(x,y);
b_array[3].position = sf::Vector2f(0,y);
b_array[0].texCoords = sf::Vector2f(0,0);
b_array[1].texCoords = sf::Vector2f(x,0);
b_array[2].texCoords = sf::Vector2f(x,y);
b_array[3].texCoords = sf::Vector2f(0,y);
}
private:
virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const
{
states.transform *= getTransform();
states.texture = &b_texture;
target.draw(b_array, states);
}
sf::Texture *b_texture;
sf::VertexArray b_array;
};
int main()
{
sf::Texture t;
if(!t.loadFromFile("C:/Test/f.png"))
std::cout << "Erreur";
Button b(&t);
sf::RenderWindow window;
window.create(sf::VideoMode(640,480), "Test", sf::Style::Default);
while(window.isOpen())
{
window.clear();
window.draw(b);
window.display();
}
return 0;
}
Mais j'obtiens l'erreur suivante :
In member function 'virtual void Button::draw(sf::RenderTarget&, sf::RenderStates) const':|
error: cannot convert 'sf::Texture* const*' to 'const sf::Texture*' in assignment|
J'ai du mal à comprendre l'erreur mais je pense bien qu'il ne faut pas faire &b_texture. Pouvez vous m'aider svp ?