[SFML 2.1] Problem z sf::Texture w std::vector
Ostatnio zmodyfikowano 2014-06-27 08:47
kryCHa Temat założony przez niniejszego użytkownika |
[SFML 2.1] Problem z sf::Texture w std::vector » 2014-06-26 22:21:25 Witam! Przejdę od razu do rzeczy. Tworzę sobie funkcję w której wczytuje obrazki do tablicy std::vector imageArray. void ImageManager::addImage( std::string fileName ) { sf::Texture tmpTexture; tmpTexture.loadFromFile( fileName ); imageArray.push_back( tmpTexture ); }
Następnie dodaję obrazek i przypisuję go do sprajta(Tak wiem głupi brzmi ;P) w konstruktorze klasy Game. Game::Game( int screenWidth_, int screenHeight_, std::string title_, bool fulllScreen_ ) { this->screenWidth = screenWidth_; this->screenHeight = screenHeight_; if( fulllScreen_ ) app = new sf::RenderWindow( sf::VideoMode( screenWidth, screenHeight ), title_, sf::Style::Fullscreen ); else app = new sf::RenderWindow( sf::VideoMode( screenWidth, screenHeight ), title_ ); app->setVerticalSyncEnabled( true ); ImageManager::getImageManager().addImage( "Character.png" ); sprite.setTexture( ImageManager::getImageManager().getImage( 0 ) ); }
Potem funkcja render() wyświetla obrazek. void Game::render() { app->clear(); app->draw( sprite ); app->display(); }
Mianowicie chodzi o to, że zamiast obrazka wyświetla się tylko białe tło. Używam biblioteki SFML 2.1 |
|
Glazus |
» 2014-06-26 22:44:13 |
|
kryCHa Temat założony przez niniejszego użytkownika |
» 2014-06-26 22:49:48 Thx ;> Zmieniłem std::vector < sf::Texture > imageArray na std::vector < sf::Texture *> imageArray Pozostało mi tylko jedno pytanie. Dlaczego to działa a poprzednie nie ? |
|
pekfos |
» 2014-06-26 22:57:03 Bo sprajt trzyma tylko wskaźnik na obraz, a vector<> przemieszcza obiekty w pamięci. |
|
kryCHa Temat założony przez niniejszego użytkownika |
» 2014-06-27 00:56:31 Dzięki. Wiem. Jeden wątek = jeden problem. Ale teoretycznie można to pod to podpiąć ;P ImageManager::~ImageManager() { for( unsigned int i = 0; i < imageArray.size(); i++ ) delete imageArray[ i ]; imageArray.clear(); }
Jak widać zwalniam pamięć. I wszystko jest niby ok. Ale jak kliknę "X" na wyrenderowanym oknie to wyskakuje mi - Debug Assertion Failed! Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) Wie ktoś o co chodzi? |
|
maly |
» 2014-06-27 07:24:51 Usuwasz coś co zostało wcześniej usunięte. |
|
kryCHa Temat założony przez niniejszego użytkownika |
» 2014-06-27 08:47:23 A faktycznie. Thx za pomoc.
Close. |
|
« 1 » |