25.03.2016

Wyświetlanie zawartości okna za pomocą macierzy sektorów

Postanowiłem trochę rozbudować i zoptymalizować sposób wyświetlania zawartości okien. W starszej wersji silnika, plany okna typu theWindow w całości stanowiły powierzchnie RGBA. To proste rozwiązanie ma jednak mankament, duże plansze wymagają alokacji dużej ilości pamięci, bo wszystkie obiekty (nawet jeżeli powtarzają się w kilku miejscach) są nakładane na całą powierzchnię planu okna, czyli są powielane w pamięci.
Dlatego dodałem do obiektu typu theWindow macierz sektorów ze wskaźnikami do powierzchni poszczególnych obiektów w oknie. Każdy plan okna ma swoją własną macierz dwuwymiarową złożoną z obiektów typu mSector. Każdy sektor zawiera wektor wskaźników do obiektów, które znajdują się w danej lokalizacji oraz flagę informującą czy ten sektor całkowicie zasłania niższe warstwy planów. Obiekty wizualne, znajdujące się na wektorze w sektorach, mogą mieć rozmiary większe od jednego sektora, w takim przypadku ten sam wskaźnik zostanie dodany do wektora sąsiedniego sektora (lub do wielu sąsiednich, w zależności od rozmiarów obiektu).
W ten sposób każdy obiekt wizualny o tym samym wyglądzie nie jest powielany na planie, jest jedynie dodany wskaźnik do odpowiedniej lokalizacji.

Brak komentarzy:

Prześlij komentarz