Witam.
Od razu napiszę, że szukałem po google, lecz niczego co by mi pomogło nie znalazłem. Zwracam się do Was o pomoc, bo już nie mam pojęcia jak to zrobić.
Mianowicie. Posiadam mapę zrobioną z kafelków (każdy kafelek ma pole, w którym trzyma wskaźnik na kafelek nad nim i pod nim).
Pierwszą warstwę rysuję całą i nie ma z tym problemu, bo są na tym samym poziomie. Jednak co do drugiej są już problemy. Jako, że jest na równi ze wszystkimi obiektami, które nie mają stałej pozycji trzeba je jakoś ułożyć. Posiadam std::vector<Drawable*>, w którym zbieram wszystkie Tile i Entity jakie będą rysowane z uwzględnieniem kolejności rysowania (Aktualnie skały i gracz). Poniżej załącz link do obrazka, który pokazuje jak to wygląda.
http://screenshooter.net/2148672/rikhckk
http://screenshooter.net/2148672/alpbahm
Klasa Drawable implementuje metody do pozyskiwania współrzędnych x i y najniższego punktu na obrazku (czyli prawy dolny róg).
używam std::sort z custumową metodą porównywania. Próbowałem różnych obliczeń, ale niektóre tylko po części dają dobre rezultaty (np z 2/3 stron), a tyle to nic, raczej szczęście ;d.
Myślałem też nad tym, czy może ta ilość informacji jest niewystarczająca? Jeśli jest potrzebne coś więcej to bardzo proszę o nakierowanie, mogę dodać do implementacji trochę wartości, jeśli samo x i y nie wystarcza.
Ogólnie główne pytanie brzmi, jak posortować te obiekty tak, żeby było złudzenie trójwymiarowości. Jak już pisałem wyżej, jeśli jest potrzebne w kodzie więcej informacji do obliczeń to nie ma problemu.
PS. Rozmyślałem też na próbą wyliczenia kątą pomiędzy dwoma obiektami i bazowanie na tym przy sortowaniu. Nie wiem jak to wypali.
PS2. Jeśli to w czymś pomoże to używam allegro 5. Również chciałbym uniknąć korzystania z Z-buffera jeśli to możliwe.
PS3. Ad PS cos niezbyt