Skocz do zawartości

Dlaczego utworzony sprite zajmuję 85MB...


Rekomendowane odpowiedzi

Witam

 

Chciałem zrobić prostą animację zrobioną z 25 klatek w rozdzielczości 1280x720, mającą służyć jako tło do menu. Po utworzeniu jednak okazało się że ten sprite waży aż 85MB, dlaczego aż tyle się z tego zrobiło skoro tworzyłem sprite z pliku png który waży 431KB.

 

Dlaczego tak jest i ja coś robię źle? Nie powinienem używać sprite do tego typu animacji? Jeżeli tak to jak to inaczej zrobić? Proszę o pomoc.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Karta graficzna przechowuje grafiki zawsze rozkompresowane, jako BMP. Nie ma innej opcji, bo by co klatkę musiała tracić procesor na dekompresję, wrzucać na chwilę do pamięci, usuwać i tak z każdym kolejnym sprite.

Zatem JPG czy PNG ma sens tylko jeśli chodzi o wagę EXE.

 

25 * 1280 * 720 * 4bajty ~= 88 MB (4 bajty, bo grafika z kanałem alpha jest 32 bitowa, bajt to 8 bitów, zatem 32 bity to 4 bajty).

Odnośnik do komentarza
Udostępnij na innych stronach

Nie ma innej opcji, bo by co klatkę musiała tracić procesor na dekompresję, wrzucać na chwilę do pamięci, usuwać i tak z każdym kolejnym sprite.

Grafiki są dekompresowane tylko podczas transportu z RAM do VRAM (albo nawet wcześniej przy odczycie z dysku/sieci), czyli zależnie od pojemności pamięci karty graficznej i ilości grafik na scenie, z grubsza robi się to albo raz, albo bardzo rzadko, a nie co klatkę (jedyny przypadek to odtwarzanie filmów, lub streaming tekstur, ale temu służą dedykowane optymalizowane formaty tekstur).

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...