Witaj!
flowCRANE dodał nowy post w wątku: Różne wymiary klatek w sprite sheet dla jednostki
U siebie mam na razie obsługę atlasów ze sprajtami znaków (jeden atlas zawiera wszystkie znaki danej strony fontu) oraz ze sprajtami kształtów kursorów (jeden atlas zawiera sprajty wszystkich kształtów i klatek animacji). Niżej wrzucam testowe atlasy, jeden z fontem, drugi z kursorem:  Tworzę je w swoich edytorach, dodając do projektu zbiory plików (jeden plik to jeden znak lub klatka danego kształtu kursora), przy zapisie projektu edytor tworzy binarkę z gotowym fontem/kursorem, która oprócz atlasu, zawiera również lookup table z obszarami wszystkich sprajtów, dzięki czemu renderowanie tekstu czy kursora wymagało ogranicza się do pobrania obszaru z lookup table i bezpośredniego użycia (nie trzeba niczego obliczać). Dla fontów i kursorów stosuję prosty algorytm układania sprajtów w atlasie (po stronie edytora) — obliczam maksymalną wysokość i szerokość sprajtu i ona określa rozmiar komórki w atlasie. Następnie konwertuję liczbę sprajtów na liczbę komórek w pionie i poziomie, tak aby atlas był jak najbliższy kwadratowemu. Na koniec maluję każdy sprajt w lewym górnym rogu każdej komórki. Atlasy ston fontów i kursorów są mikroskopijne, więc taki prosty sposób jest w ich przypadku w zupełności wystarczający. Być może skorzystam z niego również do budowania atlasów ze sprajtami dla animacji wszelkich ruchomych obiektów (postaci, przedmiotów itd.). Natomiast atlasy z kaflami służącymi do budowania terenu najpewniej będę pakował w inny sposób. Wszystko dlatego, że sprajty dla scenerii będą miały drastycznie różne rozmiary, więc aby nie marnować przestrzeni w atlasach (i zwiększać zapotrzebowania na VRAM), te najpewniej będą ciasno pakowane w atlasach (są do tego algorytmy), tak aby ograniczyć puste przestrzenie do minimum. Ale tak samo jak w przypadku fontów i kursorów, do atlasu dołączony będzie lookup table z obszarami każdego sprajtu, żeby można było szybko i wygodnie pobierać obszary sprajtów i je renderować.
Z poważaniem, 4programmers.net
|