Lazarencjusz Temat założony przez niniejszego użytkownika |
[SFML 2.1] Problem z wyświetleniem obrazka » 2013-12-12 23:57:25 Witam. Mam problem z wyświetleniem obrazka w swojej pseudo grze. Nie chodzi tutaj o proste: Texture tekstura; tekstura.loadFromFile( "samolot.png" );
Sprite samolocik; samolocik.setTexture( tekstura ).
Lecz o zrobieniu tego na klasach. Nie mam też problemu w ogarnięciu tego jak klasy będą wyglądać. Problem zaczyna się w momencie, kiedy do klasy, która wczyta teksturę na sprajta przekazuję teksturę. Wtem nieważne co to za tekstura i jak zainicjowana, zamiast obrazka mam biały kwadrat o rozmiarach pliku samolot.png (np). Podmieniając obrazek kwadrat zmienia rozmiary na wielkość wczytanego pliku graficznego. Oto kod z grubsza: Sprajt * samolot;
Texture tekstura; tekstura.loadFromFile( "samolot.png" );
stworzObiekty( tekstura );
void stworzObiekty( Texture tekstura ) { samolot = new Sprajt( tekstura ); }
Oczywiście błąd robi się przez przekazanie zmiennej Texture. Dziwne że potrafi zrobić biały prostokad o wymiarach obrazka i w miejscu gdzie ma być... Próbowałem referencji (nie kompiluje się) wskaźników (i tak nie działa jak już się kompiluje). Więc, bardzo proszę o pomoc, bo nie wiem co mam z tym robić. |
|
DejaVu |
» 2013-12-13 00:15:31 Banalny problem, wielokrotnie rozwiązany u nas na forum. Przekazuj obiekty tekstur przez referencję. |
|
Lazarencjusz Temat założony przez niniejszego użytkownika |
» 2013-12-13 09:48:49 OK, poszukam. Lecz osobiście próbowałem przez referencję i nie działało. Może robiłem to źle... Zobaczymy. |
|
Lazarencjusz Temat założony przez niniejszego użytkownika |
» 2013-12-13 10:52:09 Przeszukałem forum pod kątem tego co potrzebuję, lecz żadne rozwiązanie się nie nadawało. Menadżer tekstur też się nie nadawał (ten z forum). Przekazując przez referencję w sposób c i c++ też nie działa. Nawet jak zmienna teksturowa jest globalna. Da ktoś radę napisać mały programik, gdzie tekstura jest przekazywana do funkcji gdzie tworzony jest sprajt? Tylko tyle potrzebuję.
//edit:
Do funkcji tworzącej sprajta przekazać chcę konkretnego sprajta i teksturę dla niego. |
|
maly |
» 2013-12-13 12:08:01 Próbowałem referencji (nie kompiluje się) |
Nie kompiluje się bo robisz coś źle. Przeszukałem forum pod kątem tego co potrzebuję, lecz żadne rozwiązanie się nie nadawało |
Rozwiązanie to prawie zawsze referencja. Da ktoś radę napisać mały programik, gdzie tekstura jest przekazywana do funkcji gdzie tworzony jest sprajt? Tylko tyle potrzebuję. |
& |
|
DejaVu |
» 2013-12-13 12:16:56 |
|
Lazarencjusz Temat założony przez niniejszego użytkownika |
» 2013-12-13 22:56:17 Z podanego linku powyżej udało mi się wyciągnąć coś takiego: int zwiekszIloscTekstur() { static int x = 0; ++x; return x; }
sf::Sprite utworzSprite( String lokalizacjaPliku, int pozX, int pozY ) { int x = zwiekszIloscTekstur(); static Texture tex[ 10 ]; tex[ x ].loadFromFile( lokalizacjaPliku ); sf::Sprite spr( tex[ x ] ); spr.setPosition( pozX, pozY ); spr.setScale( 1, 1 ); return spr; }
Sprite spr; spr = utworzSprite( "samolot.png", 0, 0 );
Sprite spr2;
spr2 = utworzSprite( "gfx/edytor/strzalkaOknaGora.png", - 100, - 100 );
Rekurencję wiem jak używać, lecz nie działa to dla przekazania tekstury. Jakby działało to bym dawno sobie z tym poradził. Chyba, się bardzo mylę i ktoś mnie oświeci (taki ot chwyt :) )? To moje rozwiązanie ma taką wadę, mam tam tablicę i muszę znać ilość tekstur w moim programie. Trudno, może jakoś to przeboleję. |
|
Lazarencjusz Temat założony przez niniejszego użytkownika |
» 2013-12-13 23:44:56 W zasadzie po przerobieniu kilku namoconych wersji mojego programu, wróciłem do tej pierwszej, od której się wszystko zaczęło. Na zmiennych globalnych (klasowych) i po przekazaniu w odpowiednim miejscu referencji, działa wszystko tak jak chciałem.
Zamykam więc dziękując za waszą pomoc :) |
|
« 1 » |