Autor Wątek: Tworzenie silnika [Manager obrazków]  (Przeczytany 1054 razy)

Offline mararok

  • Użytkownik
    • Dark Program

# Lipiec 21, 2010, 14:14:14
Czy klasa managera obrazków z mapą stl :
Kod: (cpp) [Zaznacz]
hash_map<const char*, CImage*, hash<const char*, eqstr> kImages; Powinna udostępniać metody rysujące czy nie?
Jak to wpłynie na wydajność renderingu?

Czy nie lepiej  metody zwracające odpowiedni wskaźnik, który przypiszemy do zmiennej i będziemy jej używać do wywołania funkcji rysującej?
W tym managerze chodzi mi o to, aby można dostać się do obrazka podając jako identyfikator jego nazwę:

Kod: (cpp) [Zaznacz]
kImageManager.Draw("drzewo",100,100); Czy warto coś takiego implementować w managerze?

Proszę o propozycje

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Avaj

  • Użytkownik

# Lipiec 21, 2010, 14:19:39
Jak ci pasuje to tak zrób, ja bym rozdzielił przechowywanie obrazków od rysowania. U siebie ja używałem std::map<std::string, Image*> i śmigało ładnie.

Można tak używać const char * jako klucz? Czy on przypadkiem zamiast porównywać stringi nie będzie próbował porównywać wskaźników (nie używałem nigdy hash_map).

Offline PsichiX (ΨΧΞ)

  • Użytkownik
    • PsichiX Website

# Lipiec 21, 2010, 15:04:20
u mnie manager sprajtow ma wlasnie taki dostep przez nazwe do wskaznika na obiekt i ten obiekt udostepnia rysowanie, nie zauwazylem aby to bylo wolne, raczej dziala dobrze.
oczywiscie mozesz zrobic kolejke rysowania i do niej przy wywolaniu Draw() obiektu wrzucac do jednego buffera wierzcholki i za jednym razem rysowac grupy sprajtow.

Offline mararok

  • Użytkownik
    • Dark Program

# Lipiec 21, 2010, 15:37:29
@Java w hash_map<const char*,CImage*,hash<const char*>,eqstr> Images;
eqstr to własna funkcja do porównania z wracająca wynik tej operacji, w której będzie coś w stylu: cmpstr.
Można zrobić też na std::string!!
Przy hash_map można użyć również  przeciążonego operatora [] oto przykład:
Kod: (cpp) [Zaznacz]
Images["monster"].Draw(x,y);
« Ostatnia zmiana: Lipiec 22, 2010, 13:51:39 wysłana przez mararok »