Warsztat - Programowanie gier

Wrzesień 03, 2010, 03:43:52 *
Witamy, Gość. Zaloguj się, lub zarejestruj proszę.

Zaloguj się podając nazwę użytkownika, hasło i długość sesji
Aktualności: Warsztat, Regulamin forum, #warsztat, Wiki, FAQ, NoPaste, Mapa
 
   Strona główna   Pomoc Szukaj Zaloguj się Rejestracja  
Strony: 1 2 3 [4]
  Drukuj  
Autor Wątek: [Allegro 5] Destruktor czcionki  (Przeczytany 1309 razy)
soku11
Sr. Member
****

wiadomości: 451


Zobacz profil
« Odpowiedz #45 : Luty 08, 2010, 22:04:59 »

Pewnie źle działa. Zresztą takich konstrukcji to ja jeszcze nie widziałem. Już lepiej zrobić zapamiętywanie ścieżki do pliku i w konstruktorze kopiującym ponownie wczytać czcionkę po nazwie z innej czcionki. A już najlepiej to skorzystać z managera zasobów (co zostało już zasugerowane).

Pozdrawiam.
Zapisane
steckel
Full Member
***

wiadomości: 125



Zobacz profil
« Odpowiedz #46 : Luty 09, 2010, 17:14:54 »

Szczerze mówiąc też się dziwie, że to działa, ale lepiej nie potrafię, więc nawet taki sposób będzie dobry.
Zapisane

Dab
Member2000
*******

wiadomości: 3170


wiadomości: 2963


Zobacz profil WWW
« Odpowiedz #47 : Luty 09, 2010, 17:39:08 »

Chociaż dopiero teraz widzę, że auto_ptr niewiele tu pomoże - w końcu ALLEGRO_FONT niekoniecznie jest alokowane przez new (i jeszcze parę innych szczegółów, jak semantyka, jest przeciwko auto_ptrowi). Zainteresuj się tym, o czym pisał ShadowDancer.
No faktycznie, generalnie chodziło mi o różnicę miedzy rozwiązaniem w poście wyżej a tym co jest w auto_ptr.
Czyli przy kopiowaniu usuwamy zasób/wskaźnik z RHS a nie LHS. Nie jest to proste, bo standard mówi że copy ctr bierze const reference, ale  pod MSVC nie jest to wymagane a pod GCC można zastosować sztuczkę jak ichni auto_ptr.
Zapisane

steckel
Full Member
***

wiadomości: 125



Zobacz profil
« Odpowiedz #48 : Luty 09, 2010, 18:53:58 »

To jest dziwne, bo teraz po pierwszym przypisaniu jest w porządku, a po drugim program się wysypuje.
Zapisane

Aithne
Hero Member
*****

wiadomości: 648


Zobacz profil
« Odpowiedz #49 : Luty 09, 2010, 20:12:48 »

Pewnie strukturka ALLEGRO_FONT zawiera w sobie jakieś wskaźniki/uchwyty, więc przy zwolnieniu samej strukturki biblioteka uznaje, że zasoby trzeba pozwalniać. W wyniku tego kopiowanie samej struktury pole po polu nic nie da i w dalszym ciągu jest trzymane niepoprawne coś. Naprawdę zainteresuj się resource managerami.
Zapisane
ShadowDancer
Hero Member
*****

wiadomości: 797


e-kozak


Zobacz profil
« Odpowiedz #50 : Luty 09, 2010, 20:59:00 »

Dodam, że resource manager to jakiś moduł zarządzający zasobami naszej aplikacji(np. dba, żeby zawsze wczytana była tylko jedna "kopia" tej czcionki, a w przypadku ponownej próby utworzenia zwraca "uchwyt" do tej już istniejącej).
Zapisane

Cytuj
Rootman88:
Nie rozumiem, przecież wskaźnik typu void nie zawiera informacji na jaki typ ma wskazywać to dlaczego przy próbie dobrania się do danych na które wskazuje muszę podawać ich typ ?
steckel
Full Member
***

wiadomości: 125



Zobacz profil
« Odpowiedz #51 : Luty 09, 2010, 22:23:07 »

O Resource Manager przeczytałem tutaj:
http://www.gamedev.net/reference/programming/features/resourceMngtCppStl/
i już chyba wiem mniej więcej o co chodzi. Ściągnąłem przykładowy kod i nie potrafię zrozumieć tej linijki:
Kod
void (*CreateResource)( T **resource, const unsigned int handle, const std::string& name, const std::string& path );
 
Jest to w klasie Resource Manager i służy do tworzenia nowych zasobów. Na początku jest 'void', czyli funkcja nie zwraca żadnej wartości. Nie wiem co robi '(*CreateResource)', a 'T **resource' domyślam się, że to jest wskaźnik na wskaźnik na jakiś typ. Robiłem tak kiedyś, żeby stworzyć dwuwymiarową tablicę dynamiczną, ale nie wiem po co to jest tutaj.
Zapisane

maciek_slon
Full Member
***

wiadomości: 183



Zobacz profil
« Odpowiedz #52 : Luty 09, 2010, 22:36:00 »

W tym artykule jest napisane, do czego służy ta funkcja. Poczytaj dokładnie.
Zapisane
steckel
Full Member
***

wiadomości: 125



Zobacz profil
« Odpowiedz #53 : Luty 09, 2010, 22:41:32 »

Napisałem, że wiem do czego służy. Problem w tym, że nie wiem jak działa (chodzi mi o składnię).
« Ostatnia zmiana: Luty 09, 2010, 22:46:48 wysłane przez steckel » Zapisane

Aithne
Hero Member
*****

wiadomości: 648


Zobacz profil
« Odpowiedz #54 : Luty 09, 2010, 22:47:53 »

Poczytaj w jakimś kursie o wskaźnikach na funkcję.
Zapisane
maciek_slon
Full Member
***

wiadomości: 183



Zobacz profil
« Odpowiedz #55 : Luty 09, 2010, 23:01:27 »

Jest w tym artykule użyte słowo-klucz: callback. :>
Zapisane
steckel
Full Member
***

wiadomości: 125



Zobacz profil
« Odpowiedz #56 : Luty 10, 2010, 00:24:51 »

Myślałem, że Resource Manager jest trudniejszy do opanowania. Jutro dokładniej go przetestuję i poczytam o 'callback'. Dzięki za wskazówki.
Zapisane

Strony: 1 2 3 [4]
  Drukuj  
 
Skocz do:  

Hosting: Polska Strefa - Ogłoszenia
Powered by SMF 1.1.7 | SMF © 2006, Simple Machines LLC