Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML 2.0] Problem z teksturą - konstruktor.

Ostatnio zmodyfikowano 2012-12-15 21:24
Autor Wiadomość
Nevea
Temat założony przez niniejszego użytkownika
[SFML 2.0] Problem z teksturą - konstruktor.
» 2012-12-15 19:01:17
Mój problem polega na tym, że zamiast normalnej tekstury wyświetla się biały prostokąt o tych samych wymiarach.

Moje fragmenty kodu:


C/C++
class postac
    : public sf::Sprite
{
public:
    sf::Sprite sprite;
    sf::Texture texture;
    postac();
   
    postac( int rodz, std::string tex_naz )
    {
        texture.loadFromFile( tex_naz );
        texture.setSmooth( true );
        sprite.setTexture( texture );
    }
   
    void wyswietl( sf::RenderWindow & oknoAplikacji )
    {
        oknoAplikacji.draw( sprite );
    }
};

{...}

typedef std::vector < postac > VobiektyS;
VobiektyS sObiekty;

{...}

sObiekty.push_back( postac( 0, "ludzik.png" ) );

{...}

sObiekty[ 0 ].wyswietl( oknoAplikacji );

Nie potrafię znaleźć błędu.
Proszę o pomoc.
P-71121
Mrovqa
» 2012-12-15 20:50:13
Ten problem pojawiał się na tym forum już niejednokrotnie. Albo zrób vector wskaźników na klasę, albo w klasie użyj wskaźnika na teksturę. Poza tym - dziedziczysz klasę sf::Sprite i równocześnie definiujesz sobie obiekt tej klasy jako składową. Po co Ci to?
P-71127
ison
» 2012-12-15 21:24:31
nie możesz trzymać sf::Texture bezpośrednio w vectorze bo vector bardzo lubi często wywoływać konstruktory i destruktory a sf::Texture jest tak skonstruowany, że konstruktor kopiujący nie kopiuje tekstury zaś destruktor ją niszczy.
P-71130
« 1 »
  Strona 1 z 1