Στην καθημερινότητά μας έχουμε ακούσει πολλές φορές αναφορές για το DirectX. Τι είναι όμως αυτό και που χρησιμεύει;

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

Τι είναι το API

Πριν δούμε την ιστορία πρέπει να εξηγήσουμε τι είναι το API.  Προέρχεται από τα αρχικά του λέξεων Application Programming Interfaces και στα Ελληνικά σημαίνει Διεπαφές Προγραμματισμού Εφαρμογών. Μέσα σε ένα ΑPI περιλαμβάνεται ένα σύνολο από υπορουτίνες, πρωτόκολλα και εργαλεία δημιουργίας εφαρμογών, και το αυτό έχει ως σκοπό να κάνει τη ζωή του προγραμματιστή πιο εύκολη. Φυσικά, API δεν δημιούργησε μόνο η Microsoft αλλά και άλλες εταιρίες για τα δικά τους λειτουργικά συστήματα, για το hardware του PC, για μια βιβλιοθήκη ή μια γλώσσας προγραμματισμού. Για παράδειγμα το γνωστό σε πολλούς Java API περιέχει έτοιμες κλάσεις και αντικείμενα για να βοηθήσουν τον προγραμματιστή να φτιάξει πιο γρήγορα το πρόγραμμά του και να μην χρειαστεί δουλειά από το μηδέν.

Το Direct API

Η Microsoft ονόμασε το δικό της API ως API Direct. Έτσι υπάρχει το DirectMusic, DirectSound, Direct3D, DirectDraw κλπ. Με τον όρο DirectX εννοεί ότι το Χ θα μπορούσε να είναι ένα οποιοδήποτε από τα Sound, 3D, Draw API’s ακόμα και σε συνδυασμό. Αρχικά, σύμφωνα με συνεντεύξεις και άλλα λεγόμενα από την εταιρεία, η κονσόλα της, το Xbox, πήρε το όνομά του από το DirectX για να δείξει η εταιρία ότι αυτό βασίζεται σε DX τεχνολογία – γι’αυτό και η αρχική προτεινόμενη ονομασία ήταν DirectXbox. Και φυσικά δεν είναι τυχαίο ότι στο Xbox τα χειριστήρια δουλεύουν με το Xinput όταν στο PS4 δουλεύουν με το D input.

DirectX 1.0

H ανάπτυξη των DirectX ξεκίνησε το 1994 λίγο πριν τα windows 95. Ο λόγος ήταν ότι οι προγραμματιστές της τότε εποχής έβρισκαν πιο ελκυστικό το MS-DOS για να αναπτύξουν τα παιχνίδια τους. Με αυτόν τον τρόπο καταδίκαζαν τα windows 95 σε αποτυχία. Βλέπετε, το DOS προσέφερε απευθείας πρόσβαση στις GPU και τα περιφερειακά, την ίδια ώρα που τα windows 95 με το προστατευόμενο μοντέλο μνήμης περιόριζαν την απευθείας πρόσβαση στο hardware. H Microsoft χρειαζόταν μια γρήγορη λύση και 3 υπάλληλοί της ονόματι Craig Eisler, Alex St. John και Eric Engstrom, έφτιαξαν το API που ονόμασαν DirectX. Από την ονομασία του καταλαβαίνει κανείς πλέον ότι μέσω του API αυτού δινόταν η απευθείας πρόσβαση στο hardware τηρώντας παράλληλα το μοντέλο μνήμης που προαναφέρθηκε.

Η κυκλοφορία του DX1 έγινε τον Σεπτέμβρη του 1995.  Η υιοθέτηση του, ωστόσο, ήταν αργή από τους Game Developers της εποχής καθώς υπήρχαν αρκετοί σκληροπυρηνικοί που έγραφαν για το DOS, κάτι που φυσικά ανησυχούσε την MS.

DirectX 2.0 -4.0

Αργότερα, και συγκεκριμένα στα μέσα του 1996, βγήκε το DX2 ως κομμάτι των windows 95 OSR2 και Windows NT 4.0. Υπήρχαν όμως πολλοί δύσπιστοι game developers που αμφισβητούσαν την ικανότητα της MS να κάνει μια gaming πλατφόρμα για τα Windows. Έτσι, ξεκίνησαν διάφορα gaming events σε ένα από τα οποία παρουσιάστηκε το Direct3D και το DirectPlay με επίδειξη του Mechwarriors 2 να παίζεται multiplayer μέσω Internet. Η εταιρεία έκανε πολλούς ελέγχους με πολλούς διαφορετικούς συνδυασμούς hardware σε κάθε beta και final version για να αποδείξει ότι το νέο hardware ήταν συμβατό και δούλευε άψογα.

2002-Σήμερα

Έκτοτε κύλησε πολύ νερό στο αυλάκι, με την Microsoft να βγάζει το OpenGL για να δώσει έμφαση στο gaming και σε CAD εφαρμογές, και φτάνουμε αισίως στο 2002 με το DX9 στα XP και το DX10 με την έλευση των Vista, που χαρακτηρίστηκε από θεαματικές αλλαγές με πράγματα που είχαν μείνει από παλαιότερες εκδόσεις να φεύγουν και να δημιουργούνται νέα για τις ανάγκες της νέας τεχνολογίας, όπως τη απουσία του DirectSound που έγινε Cross Platform Audio Creation Tool (XACT). Αυτό σημαίνει πως υπήρχε αδυναμία πια να παράγει ήχους το hardware και πολλά ακόμα πράγματα. Το DX11 έρχεται τον Οκτώβρη του 2009 μαζί με τα windows 7 ενώ 15 αργότερα το παίρνουν και τα Vista σε μια εποχή που οι επεξεργαστές έχουν αποκτήσει πυρήνες περισσότερους από 1 με αποτέλεσμα να περιλαμβάνει μεταξύ άλλων καλύτερη εκμετάλλευση των πολλών threads και φυσικά 3D vision για games και βίντεο. Αν και αυτό υπήρχε από το DX10, από προσωπική εμπειρία, στο DX11 έγινε ακόμα καλύτερο. Στις 29 Ιουλίου 2015 έρχεται να μπει για τα καλά στα Windows 10 και το Xbox One. Μεταξύ των σημαντικών αλλαγών (όπως το Direct3D 12 που προσφέρει καλύτερα αποτελέσματα παράλληλης επεξεργασίας δεδομένων στη GPU) προσφέρει κάτι που λέγεται Multiadapter support. Με αυτό είναι εφικτό πλέον στο ίδιο σύστημα να υπάρχουν 2 κάρτες γραφικών οι οποίες να ανήκουν σε διαφορετικό κατασκευαστή. Δηλαδή μια της Nvidia και μια της ΑMD.

To Multiadapter έχει 2 modes: Το Implicit που επιτρέπει στις SLI κάρτες ή στις CF κάρτες να επεξεργάζονται όπως παλιά, παράλληλα τα frames και το σύστημα να διαβάζει 2 κάρτες των 4GB ως μια των 4GB. Το άλλο mode με όνομα Explicit επιτρέπει σε 2-4 κάρτες, χωρίς να μας νοιάζει αν είναι mix AMD και Nvidia (με παρόμοιες επιδόσεις), να συνδυάσουν τους πόρους τους και τις VRAM τους έτσι ώστε 4+4GB=8GB. Φυσικά, αυτό απαιτεί από τον προγραμματιστή πολλή παραπάνω δουλειά καθώς είναι διαφορετικός ο τρόπος λειτουργίας καρτών από 2 διαφορετικούς κατασκευαστές ολοκληρωμένων. Το πρώτο game που βγήκε στο DX12 είναι το Ashes of Singularity και έδειξε ότι οι επιδόσεις των καρτών στο DX12 παρουσιάστηκαν έως και 70% παραπάνω από DX11.

Ανακεφαλαιώνοντας

Το DirectX είναι η γενικότερη ονομασία διαφορετικών API’s που χρησιμοποιούν οι προγραμματιστές για να έχουν πρόσβαση στο hardware. Πήρε το όνομα Direct διότι στα Windows 95 που αφαιρέθηκε η δυνατότητα άμεσης πρόσβασης στο hardware και στα περιφερειακά έπρεπε να υπάρχει κάτι που να δίνει πρόσβαση σε αυτά υπό το νέο προστατευόμενο μοντέλο μνήμης.