Γνωστά κενά και τι ακολουθεί#

Αυτός ο οδηγός κάλυψε δύο διαστάσεις διεξοδικά και σταμάτησε εκεί σκόπιμα. Αυτό το καταληκτικό κεφάλαιο σχεδιάζει το όριο ρητά: τι θα πρόσθετε μια δεύτερη έκδοση, τι ανήκει σε ξεχωριστούς οδηγούς, και πού τελειώνει προς το παρόν το σύνορο του FFI. Η ονομασία αυτών σας κρατά από το να ψάχνετε για κάλυψη που δεν είναι εδώ, και χαράζει τον δρόμο μπροστά.

Η τρίτη διάσταση (προγραμματισμένη v2)#

Καθετί τρισδιάστατο αναβάλλεται για μια συνέχεια, δεν παραλείπεται κατά λάθος. Το κεφάλαιο των θεμελίων ονόμασε τη μία έννοια που μεταφέρεται (τον Z-buffer, που αποφασίζει τι είναι πλησιέστερα στον θεατή), και το κεφάλαιο των αλγορίθμων σημείωσε ότι η τεσελίωση σε τρίγωνα είναι η γέφυρα προς το 3D, αλλά κανένα δεν πήγε παρακάτω. Μια δεύτερη έκδοση θα κάλυπτε:

  • Το OpenGL, μέσω μιας συντηρούμενης σύνδεσης, για απόδοση με επιτάχυνση υλικού: τη μοντέρνα σωλήνωση shader, τους ενταμιευτές κορυφών και δεικτών, και τα μαθηματικά (προβολή, ο μετασχηματισμός model-view) που μετατρέπουν μια σκηνή 3D σε μια εικόνα 2D.

  • Τον ενταμιευτή βάθους στα αλήθεια, όχι απλώς την έννοια: πώς η σειρά σχεδίασης παύει να έχει σημασία και το βάθος αποφασίζει την ορατότητα.

  • Ένα ολοκληρωτικό έργο 3D παιχνιδιού, το τρίτο έργο που ονόμασε το αρχικό σχέδιο, χτισμένο πάνω σε όποια διαδρομή 3D αποδειχθεί πιο ειλικρινής να τρέξει εκείνη τη στιγμή.

Το 3D είναι ένα μεγάλο θέμα και το να του αποδοθεί δικαιοσύνη χρειάζεται τον δικό του άξονα· η δίπλωση μιας ισχνής έκδοσης μέσα σε αυτόν τον οδηγό θα είχε αδικήσει και τις δύο διαστάσεις.

Σκόπιμα εκτός πεδίου#

Τρεις περιοχές εξαιρούνται σκόπιμα και θα ήταν καθεμία ένας ξεχωριστός οδηγός, όχι ένα κεφάλαιο εδώ:

  • Προγραμματισμός GPU. Η συγγραφή shaders υπολογισμού ή γραφικών και η εκτέλεση εργασιών γενικού σκοπού στη GPU είναι ένας διακριτός κλάδος με τη δική του εργαλειοαλυσίδα. Αγγίζει τα γραφικά αλλά δεν είναι σχεδίαση, και κερδίζει τη δική του μεταχείριση.

  • Υπολογιστική όραση και ανάλυση εικόνας. Αυτός ο οδηγός χρησιμοποίησε τη συνέλιξη ως εργαλείο σχεδίασης (θόλωμα, όξυνση) και σταμάτησε ακριβώς στη γραμμή όπου τα ίδια μαθηματικά γίνονται ανίχνευση και αναγνώριση. Η ανίχνευση χαρακτηριστικών, η κατάτμηση και η αναγνώριση είναι ανάλυση, όχι σχεδίαση, και ανήκουν αλλού.

  • Φιλοξενούμενες υπηρεσίες παραγωγής εικόνων. Οι συνδέτες προς εξωτερικά API παραγωγής εικόνων είναι δουλειά δικτύου και ενσωμάτωσης υπηρεσιών, όχι προγραμματισμός γραφικών, και είναι εκτός πεδίου ανεξάρτητα από τη διάσταση.

Το σύνορο του FFI#

Ο άξονας του «φτάνοντας πιο μακριά» ήταν ειλικρινής σε κάθε βήμα για το πού προσεγγίζει προς το παρόν το εγγενές FFI της pperl. Συγκεντρωμένο εδώ, το σύνορο είναι:

  • Το στρώμα περιγραφής δεδομένων του Επιπέδου 2. Οι ακατέργαστες κλήσεις Peta::FFI χειρίζονται βαθμωτά, συμβολοσειρές, ενταμιευτές και αδιαφανείς χειριστές, που καλύπτει ένα μεγάλο μέρος πολλών API γραφικών σε C και όλο ένα library όπως το Cairo. Αυτό που δεν περιγράφουν ακόμη είναι ένα struct που περνιέται ή επιστρέφεται κατά τιμή, ή ένα union όπως μια εγγραφή συμβάντος παραθύρων. Το δηλωτικό στρώμα περιγραφής δεδομένων κατασκευάζεται για να κλείσει ακριβώς αυτό το κενό, και είναι το κομμάτι που λείπει ανάμεσα στις σημερινές ακατέργαστες κλήσεις και σε μια άνετη σύνδεση για βιβλιοθήκες με πολλά structs.

  • Callbacks. Μια βιβλιοθήκη που καλεί πίσω τον κώδικά σας (ένας βρόχος συμβάντων που επικαλείται έναν χειριστή, ένα σήμα σχεδίασης) χρειάζεται έναν δείκτη συνάρτησης C που ξαναμπαίνει στην Perl. Αυτό είναι πέρα από το ακατέργαστο στρώμα σήμερα.

  • Μια πλήρης σύνδεση SDL2. Το ολοκληρωτικό έργο του παιχνιδιού έδειξε ότι το SDL2 είναι εν μέρει προσεγγίσιμο τώρα (δημιουργία παραθύρου και renderer, οι βαθμωτές κλήσεις) και μπλοκαρισμένο στα δύο παραπάνω στοιχεία για τα υπόλοιπα (τα union συμβάντων, και ιδανικά τα callbacks). Είναι η φυσική πρώτη μεγάλη επιμελημένη σύνδεση γραφικών μόλις προσγειωθεί το στρώμα περιγραφής δεδομένων, ακολουθώντας το πρότυπο της επίδειξης του Cairo.

Κανένα από αυτά δεν είναι τείχος. Είναι η σειρά με την οποία μεγαλώνει το FFI, και η δουλειά αυτού του οδηγού ήταν να σας πει σε ποια πλευρά της τρέχουσας γραμμής κάθεται κάθε εργασία.

Τι μπορείτε να κάνετε τώρα#

Σε αντιπαραβολή με το σύνορο, το έδαφος που έχει ήδη καλυφθεί είναι ευρύ. Με αυτόν τον οδηγό μπορείτε, σήμερα, στην pperl:

  • Να σχεδιάζετε εικόνες raster με πρωτογενή και φίλτρα, και να τις διαβάζετε, να τις κλιμακώνετε και να τις αποθηκεύετε (Imager, GD και ImageMagick).

  • Να παραγάγετε έξοδο vector ανεξάρτητη από την ανάλυση, ως pixel μέσω του Cairo ή ως markup μέσω του SVG (Cairo και SVG).

  • Να διαβάζετε και να γράφετε μεταδεδομένα εικόνας, και να σχεδιάζετε γραφήματα (μεταδεδομένα και γραφήματα).

  • Να ανοίγετε ένα παράθυρο, να ανταποκρίνεστε στο ποντίκι και στο πληκτρολόγιο, και να κινείτε (εργαλειοθήκες GUI).

  • Να προσεγγίζετε μια βιβλιοθήκη γραφικών C με βαθμωτά και χειριστές μέσω μιας επιμελημένης εγγενούς σύνδεσης, χωρίς μεταγλωττιστή C και χωρίς βήμα κατασκευής (επίδειξη του Cairo).

  • Να χτίζετε και να εκτελείτε πραγματικά προγράμματα: μια εφαρμογή σχεδίασης και ένα 2D παιχνίδι.

Αυτή είναι μια πλήρης δυνατότητα 2D γραφικών στην Perl, από το pixel ως ένα πρόγραμμα που τρέχει. Η τρίτη διάσταση, η GPU και η πλευρά της όρασης είναι οι δρόμοι που φεύγουν από εδώ, και βρίσκονται στον χάρτη.