[SFML 2.0] Animacje sprajtów
Ostatnio zmodyfikowano 2012-05-17 17:20
diego997 Temat założony przez niniejszego użytkownika |
[SFML 2.0] Animacje sprajtów » 2012-05-16 16:54:15 Czy prawidłowo robię animację sprajtów jeżeli tak to dlaczego gra przycina? sf::Texture[ 8 ]; sf::Sprite Sprajt; sf::Clock Clock; int next = 0; Texture[ 0 ].loadFromFile( "C:\\Users\\Marian\\Desktop\\rpg\\char\\1.png" ); Texture[ 1 ].loadFromFile( "C:\\Users\\Marian\\Desktop\\rpg\\char\\2.png" ); Texture[ 2 ].loadFromFile( "C:\\Users\\Marian\\Desktop\\rpg\\char\\3.png" ); Texture[ 3 ].loadFromFile( "C:\\Users\\Marian\\Desktop\\rpg\\char\\4.png" ); Texture[ 4 ].loadFromFile( "C:\\Users\\Marian\\Desktop\\rpg\\char\\5.png" ); Texture[ 5 ].loadFromFile( "C:\\Users\\Marian\\Desktop\\rpg\\char\\6.png" ); Texture[ 6 ].loadFromFile( "C:\\Users\\Marian\\Desktop\\rpg\\char\\7.png" ); Texture[ 7 ].loadFromFile( "C:\\Users\\Marian\\Desktop\\rpg\\char\\8.png" );
int main() { it( sf::keyboard::iskeypressed( sf::Keyboard::Right ) ) { if( Clock.getElapsedTime() > 0.5 ) { Sprajt.setTexture( Texture[ next ] ); ++next; if( next == 8 ) next = 0; Clock.reset(); } } Window.draw( Sprajt ); Window.display(); } |
|
SeaMonster131 |
» 2012-05-16 19:51:32 Hm na pewno nie masz ładowania tych obrazków w pętli głównej gry ? |
|
diego997 Temat założony przez niniejszego użytkownika |
» 2012-05-16 19:55:18 Mam i myślałem że to właśnie tam ma być a nie gdzie jest rysowanie
EDIT:: Czy chodzi ci o to Texture[ 0 ].loadFromFile( "C:\\Users\\Marian\\Desktop\\rpg\\char\\1.png" ); ? Bo jeżeli tak to poza pętlą
@SeaMonster mam to w konstruktorze klasy może tam być ?
EDIT:: Po wywaleniu wszystkich Texture[ 0 ].loadFromFile( "C:\\Users\\Marian\\Desktop\\rpg\\char\\1.png" ); Texture[ 1 ].loadFromFile( "C:\\Users\\Marian\\Desktop\\rpg\\char\\2.png" ); Texture[ 2 ].loadFromFile( "C:\\Users\\Marian\\Desktop\\rpg\\char\\3.png" ); Texture[ 3 ].loadFromFile( "C:\\Users\\Marian\\Desktop\\rpg\\char\\4.png" ); Texture[ 4 ].loadFromFile( "C:\\Users\\Marian\\Desktop\\rpg\\char\\5.png" ); Texture[ 5 ].loadFromFile( "C:\\Users\\Marian\\Desktop\\rpg\\char\\6.png" ); Texture[ 6 ].loadFromFile( "C:\\Users\\Marian\\Desktop\\rpg\\char\\7.png" ); Texture[ 7 ].loadFromFile( "C:\\Users\\Marian\\Desktop\\rpg\\char\\8.png" );
Gra diametralnie przyspieszyła widać, że trzymanie tych textur w pamięci strasznie obciąża, ale czemu? |
|
m4tx |
» 2012-05-16 20:38:23 Ja tam był te wszystkie tekstury złączył w jedną i potem tylko rysował odpowiedni kawałek sprite'a. |
|
diego997 Temat założony przez niniejszego użytkownika |
» 2012-05-16 20:51:51 Znaczy dziwi mnie to że samo trzymanie kilku textur bez używania tak obciąża procesor. EDIT:: Zaraz umre masakra jak ładuje te obrazki nie korzystając z klasy to wszystko działa nawet mogę je non stop ładować co każdy obieg pętli nic nie przycina natomiast jak ładuję do klasy to sie zaczyna #PLAYER_H
class _Player { sf::Texture Texture[ 8 ]; public: void load(); };
#PLAYER_CPP
void _Player::load() { Texture[ 0 ].loadfromfile( "textura.png" ); ... Texture[ 7 ].loadfromfile( "textura7.png" ); }
#include <iostream> #include "PLAYER.H"
int main() { sf::Window Okno(...); _Player Player; Player.load(); sf::Texture Texture[ 8 ]; Texture[ 0 ].loadfromfile( "textura.png" ); Texture[ 1 ].loadfromfile( "textura.png" ); Texture[ 2 ].loadfromfile( "textura.png" ); Texture[ 3 ].loadfromfile( "textura.png" ); Texture[ 4 ].loadfromfile( "textura.png" ); Texture[ 5 ].loadfromfile( "textura.png" ); Texture[ 6 ].loadfromfile( "textura.png" ); Texture[ 7 ].loadfromfile( "textura.png" ); while( Okno.isopen() ) { Okno.display(); } }
[ cpp ] |
|
ison |
» 2012-05-16 21:26:13 Gra diametralnie przyspieszyła widać, że trzymanie tych textur w pamięci strasznie obciąża, ale czemu?
|
nie obciąża trzymanie ich w pamięci tylko ładowanie na nowo co ułamek sekundy |
|
Admixior |
» 2012-05-16 21:27:30 A pokażesz inne funkcje jakie wywołujesz w pętli(parametry). Może masz dużo funkcji w których zamiast użyć referencji używasz kopiowanie wartości(np. playera), lub konstruktor tej klasy jest wywoływany przez coś innego. I to tak spowalnia.
//To są tylko spekulacje. Prawdziwy problem może tkwić w czymś innym. |
|
diego997 Temat założony przez niniejszego użytkownika |
» 2012-05-16 22:02:07 @Admixior dałem w komentarz wszystkie funkcje które jako parametr przyjmują obiekt klasy Player i faktycznie gra przyspieszyła tylko nie rozumiem dlaczego przecież teraz Texture[8].loadfromfile nie jest wykonywane w konstruktorze tylko w metodzie tej klasy. Przecież metoda to nie konstruktor nie powinna się wykonywać przy tworzeniu obiektu. |
|
« 1 » 2 |