[SFML 2.0] sf::Text
Ostatnio zmodyfikowano 2012-09-16 07:52
diego997 Temat założony przez niniejszego użytkownika |
[SFML 2.0] sf::Text » 2012-09-15 17:57:59 Czy zauważyliście że jeżeli w klasnie przechowywana jest tablica obiektów sf::Text np class cText { sf::Text Text[ 500 ]; public: void cos(); void jeszczecos(); };
I za każdym razem jak metoda klasy cText jest w użyciu to program strasznie spowalnia ? Czym to może być spowodowane ? |
|
kubawal |
» 2012-09-15 18:00:50 Przy wywołaniu każdej metody (cos(), jeszczecos()) program musi jej przekazać cały obiekt, w tym 500 obiektów sf::Text. To chyba nie jest dobry pomysł |
|
diego997 Temat założony przez niniejszego użytkownika |
» 2012-09-15 18:04:11 się właśnie zastanawiam czy nie przechowywać jednego obiektu sf::Text a np dynamicznie tworzyć string w zależności od tego ile textów potrzebujemy. Podam przykład jedne możecie mi powidzieć które rozwiązanie jest lepsze ... 1. class cButton { sf::Text Text; vector < string > String; int amount; public: void createButton( string String ) { String.pushBack( String ); amount++; } void draw( sf::RenderWindow Window ) { for( int i = 0; i < amount; i++ ) { Text.setString( String[ i ] ); Window.draw( Text ); } } };
2. class cButton { vector < sf::Text > Text; public: void createButton( string String ) { Text.pushBack( sf::Text( String ) ); amount++; } void draw( sf::RenderWindow Window ) { for( int i = 0; i < amount; i++ ) { Window.draw( Text[ i ] ); } } };
Możecie napisać który sposób lepszy ?? |
|
kubawal |
» 2012-09-15 18:06:57 Możesz też skorzystać z tablicy wskaźników do sf::Text i użyć dekonstruktora |
|
m4tx |
» 2012-09-15 18:18:03 Przy wywołaniu każdej metody (cos(), jeszczecos()) program musi jej przekazać cały obiekt, w tym 500 obiektów sf::Text. |
Co? :) Możesz też skorzystać z tablicy wskaźników |
Tablica to jest właśnie wskaźnik na jej pierwszy element... |
|
kubawal |
» 2012-09-15 18:27:10 Każda metoda ma niejawny argument w postaci obiektu do którego należy. Jeśli mamy: to funkcja wywołująca wrzuca na stos obiekt text i argumenty metody(czyli nic w tym przypadku), a metoda pobiera stamtąd to wszystko. Przynajmniej tak słyszałem :) Tablica to jest właśnie wskaźnik na jej pierwszy element... |
Zwykła tablica: sf::Text text[ 500 ] Tablica wskaźników: sf::Text * text[ 500 ] Widzisz różnicę? :) @up Tablica to jest właśnie wskaźnik na jej pierwszy element... | Nazwa tablicy to wskaźnik na jej pierwszy element. |
|
ison |
» 2012-09-15 20:02:10 Przy wywołaniu każdej metody (cos(), jeszczecos()) program musi jej przekazać cały obiekt, w tym 500 obiektów sf::Text. To chyba nie jest dobry pomysł
|
Wywołanie metody obiektu nie wiąże się z przekopiowaniem całego obiektu Każda metoda ma niejawny argument w postaci obiektu do którego należy.
|
Nie jest kopiowany cały obiekt, najwyżej jest przekazywany wskaźnik do obiektu. |
|
yoogi |
» 2012-09-16 07:52:57 std::cout << sizeof( sf::Text[ 500 ] ) :) |
|
« 1 » |