Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML 2.0] sf::Text

Ostatnio zmodyfikowano 2012-09-16 07:52
Autor Wiadomość
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
C/C++
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 ?
P-64975
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ł
P-64976
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.
C/C++
class cButton
{
    sf::Text Text;
    vector < string > String;
    int amount; //Liczba przyciskow
   
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.
C/C++
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 ??
P-64977
kubawal
» 2012-09-15 18:06:57
Możesz też skorzystać z tablicy wskaźników do sf::Text i użyć dekonstruktora
P-64978
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...
P-64981
kubawal
» 2012-09-15 18:27:10
Co? :)
Każda metoda ma niejawny argument w postaci  obiektu do którego należy.
Jeśli mamy:
C/C++
cText text;
text.cos();
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.
P-64983
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.
P-64996
yoogi
» 2012-09-16 07:52:57
std::cout << sizeof( sf::Text[ 500 ] )
 :)
P-65017
« 1 »
  Strona 1 z 1