background image

• κόστος συγχρονισμού CPU–GPU.

Στην υλοποίηση προστέθηκε επιπλέον buffer για διαχείριση πολλαπλών texture indices, επι-

τρέποντας την απόδοση διαφορετικών υφών εντός του ίδιου batch.

Η προσέγγιση αυτή βελτιώνει σημαντικά την απόδοση σε περιπτώσεις tile maps ή συστη-

μάτων με μεγάλο πλήθος sprites.

4.5

Αναπαράσταση αντικειμένων: Από την κλάση GameObject στο Entity

Component System (ECS)

Ως επόμενο βήμα, και δεδομένου ότι αποτελεί θεμελιώδες στοιχείο μιας μηχανής παιχνι-

διών, υλοποιήθηκε ο μηχανισμός αναπαράστασης αντικειμένων στη σκηνή. Η επιλογή αυτή συ-

νιστά φυσική συνέχεια της ανάπτυξης, καθώς επιτρέπει τον πρακτικό έλεγχο (testing) των προη-

γουμένως υλοποιημένων συστημάτων και, ιδίως, των επιμέρους μηχανισμών του rendering.

Στην αρχική εκδοχή της μηχανής, τα αντικείμενα της σκηνής μοντελοποιήθηκαν μέσω της

κλάσης GameObject, η οποία περιλάμβανε βασικές ιδιότητες μετασχηματισμού, όπως θέση,

κλίμακα και περιστροφή — καθώς και αναφορά σε γεωμετρικά δεδομένα (mesh). Η προσέγ-

γιση αυτή βασίζεται στο παραδοσιακό αντικειμενοστραφές μοντέλο, σύμφωνα με το οποίο κάθε

οντότητα υλοποιείται ως διακριτό αντικείμενο που ενσωματώνει τόσο τα δεδομένα όσο και τη

συμπεριφορά που το χαρακτηρίζει.

4.5.1

Αναπαράσταση πλέγματος με δομή Half-Edge

Για την ευέλικτη αναπαράσταση και επεξεργασία γεωμετρικών πλεγμάτων, υλοποιήθηκε

δομή δεδομένων τύπου Half-Edge Mesh. Σε αντίθεση με την απλή αναπαράσταση μέσω λί-

στας κορυφών και δεικτών (vertex–index buffers), η δομή half-edge επιτρέπει την αποδοτική

πλοήγηση στις τοπολογικές σχέσεις μεταξύ κορυφών, ακμών και εδρών.

Η βασική ιδέα της δομής half-edge είναι η αναπαράσταση κάθε ακμής ως δύο κατευθυνό-

μενες ημι-ακμές (half-edges). Κάθε half-edge περιέχει δείκτες προς:

• την κορυφή προέλευσης (origin vertex),

• την αντίθετη half-edge (twin),

• την επόμενη half-edge της ίδιας έδρας (next),

• την έδρα (face) στην οποία ανήκει.

Παρακάτω παρουσιάζεται ο σκελετός της κλάσης Half-Edge-Mesh, όπως υλοποιήθηκε στο

πλαίσιο της παρούσας εργασίας.

30