[SFML 2.1] Nakładanie grafiki
Ostatnio zmodyfikowano 2013-09-12 15:58
DzieckoBezZycia Temat założony przez niniejszego użytkownika |
[SFML 2.1] Nakładanie grafiki » 2013-09-12 13:34:39 Siema! Mam taki problem, otóż w Allegro tworzy się bufor i nakłada grafikę i tworząc mapę można ją było tworzyć z "kafelków" grafiki rysowanej wielokrotnie na jednym buforze. W SFML'u sprawa ma się inaczej. Tworząc sprite tworzy się od razu pod niego bufor, więc trzeba by było dla każdego kafelka tworzyć oddzielnego sprite. Jak można to inaczej zrobić. |
|
kubawal |
» 2013-09-12 14:52:59 Sprite to tylko taki sf::Texture z ustaloną pozycją na ekranie. sf::Sprite przechowuje referencję do swojego Texture (ustawianą za pomocą setTexture()) Więcej informacji: http://sfml-dev.org/documentation/2.1/classsf_1_1Sprite.php/edit: Tylko musisz pilnować, by póki sprite był przywiązany do tekstury, to ona istniała. A więc nigdy nie rób czegoś takiego: void ZaladujSprite( Sprite & s ) { Texture t; loadFromFile( "bleble.png" ); s.setTexture( t ); }
int main() { Sprite s; ZaladujSprite( s );
Do takich zastosowań najlepiej tworzyć sobie klasy wykorzystujące technikę RAII |
|
MrPoxipol |
» 2013-09-12 15:48:00 @up Można tak zrobić, pod warunkiem, że utworzysz obiekt sf::Texture jako statyczny. sf::Sprite load() { / Takie na szybko; ) */ static sf::Texture tex; tex.loadFromFile( "img.bmp" ); return sf::Sprite( tex ); }
sf::Sprite spr = load();
/edit: @DV czyżby błąd w parserze? @down Tak wiem, ale podałem, że można tak zrobić, jak pokazał wcześniej @kubwal |
|
pekfos |
» 2013-09-12 15:50:44 I za każdym razem ładować teksturę? |
|
kubawal |
» 2013-09-12 15:52:40 @MrPoxipol, pewnie to go zmyliło: @temat Lepiej sobie utworzyć klasę obiektu class Player { Texture plTex; Sprite pl; public: Player( string file, ); }
Jeśli planujesz utworzyć więcej obiektów, zastosuj TextureMenager'a. /edit: Zapomniałem jeszcze dodać w pierwszym poście, że do jednego Texture może być przywiązane kilka Sprite'ów. |
|
MrPoxipol |
» 2013-09-12 15:58:00 @up lepiej od razu ResourceManager'a, bo wygodniej się zarządza ;) (sam się na tym przekonałem, z oddzielnymi klasami dla Tekstur, Czcionek, Dźwięków, to jest bardzo niewygodnie ;)) |
|
« 1 » |