9.03.2016

Ładowanie grafiki z zasobów i tworzenie powierzchni RGBA

Ścieżki do plików graficznych znajdują się w "config_resources.h". Sposób Wczytywania grafiki zależy od użytej biblioteki. W moim przypadku użyłem funkcji SDL'a do ładownia plików jpg i png. Produktem na wyjściu takiej funkcji jest surowy, nieskompresowany ciąg danych reprezentujących kolejne piksele w formacie RGBA. Wskaźniki do tych danych znajdują się w strukturach typu _SURFACE. Wszystkie nazwy załadowanych plików zasobów i identyfikatory powierzchni będą się znajdowały w "config_resources.h".
Obiekty typu tileSet (zdefiniowanego w "engine2d/resources.cpp") zawierają powierzchnie typu _SURFACE wczytanych kolejno ramek (jeżeli plik był z obrazem mozaiki trzeba podać też szerokość i wysokość jednej ramki). Domyślnie wczytywany jest cały obraz do jednej powierzchni. Typ tileSet ma też zdefiniowane m.in. funkcje składowe do zmiany określonego koloru i przeźroczystości (jeżeli jest taka potrzeba).
Każde okno dla określonego ekranu może mieć kilka warstw powierzchni. Powierzchnie są nakładane na siebie w kolejności według indeksu wektora wskaźników. Na samym początku, przy budowie tła określonej warstwy, jeżeli rozmiary wczytanej wcześniej ramki (która ma wypełnić daną warstwę) są mniejsze od rozmiarów warstwy, to ta ramka zostaje powielona sąsiadująco.
Np. tak wygląda pierwsza warstwa (czyli najdalszy plan wizualny) planszy, na której znajduje się motyw wody. Ramka tekstury z wodą została powielona sąsiadująco, gdyż po wczytaniu z pliku była mniejsza od rozmiarów całego planu poziomu:

Brak komentarzy:

Prześlij komentarz