Autor Wątek: Zarządzanie zasobami  (Przeczytany 1137 razy)

Offline Icy Tower

  • Użytkownik

# Lipiec 27, 2010, 14:14:33
Cześć,
Jestem na etapie pisania paru przydatnych klas m. in. modelu, tekstury...
i zastanawia mnie kwestia podziału zasobów między poszczególne obiekty (w rozumieniu c++).

Każdy model posiada wskaźniki na dane: mesh, wek. normalne, wsp. tektury (kilka) i może te dane współdzielić z innymi modelami.

Jednak pojawiają się pewne problemy przy zwalnianiu pamięci dla poszczególnych obiektów - dane muszą istnieć tak długo jak długo istnieje choć jeden obiekt z nich korzystający.

Rozwiązanie, które przychodzi mi na myśl to dodanie licznika dla np. tablic z danymi, który pamiętałby jak wiele obiektów korzysta z tego zasobu.

W momencie kiedy obiekt zaczyna korzystać z konkretnego zasobu, zwiększa jego licznik o 1, a kiedy przestaję z niego korzystać, zmniejsza. Jeśli zaś po dekrementacji licznika, jego wartość wynosi 0, obiekt zwalnia pamięć takiego zasobu.

Czy to jest rozsądne rozwiązanie? Czy może ktoś z Was kiedyś korzystał z takiego rozwiązania? A jeśli nie to jak inaczej rozwiązać kwestie podziału zasobów?

Offline Mr. Spam

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

Offline Pastan

  • Użytkownik
    • BaseWeb.pl

# Lipiec 27, 2010, 14:18:14
Poczytaj o reference counting. :)

Offline Liosan

  • Redaktor

# Lipiec 27, 2010, 14:22:35
I dorzuć smart pointery do listy lektur ;)

Liosan

Offline rm-f

  • Użytkownik
    • Tu trolluje

# Lipiec 27, 2010, 14:24:41
I dorzuć smart pointery do listy lektur ;)

Liosan
I jeszcze 2 łopaty boosta.

IMHO jeżeli to jest mała gra, to się nie bawić i załadować na poziom od razu wszystko co będzie potrzebne.

Offline MrKaktus

  • Użytkownik

# Lipiec 27, 2010, 14:31:37
Użyj id dla zaobów. Będziesz mógł zrobić save/load stanu gry.

Offline Icy Tower

  • Użytkownik

# Lipiec 28, 2010, 12:52:52
Dzięki za odpowiedzi. Fajnie, że wpadłem na coś co ma czadową nazwę.