Microsoft DirectX
Windows 95 posait un problème de taille aux développeurs de jeux vidéo. La plupart des titres tournaient encore sous DOS, qui laissait les applications accéder directement au matériel. Avec Windows et sa gestion sécurisée de la mémoire, les performances graphiques s'effondraient. Microsoft risquait de perdre les développeurs si rien ne changeait.
La solution vint d'une petite entreprise, RenderMorphics, dont Microsoft racheta le code source. Ce fut le point de départ de DirectX. Les premières versions n'impressionnèrent personne : bugs à répétition, interface de programmation d'une complexité rebutante. Le système s'appuyait sur des execute buffers, sortes de paquets contenant les listes de sommets à afficher et leurs instructions. Les développeurs détestaient cette approche.
Tout bascula avec DirectX 5. L'interface DrawPrimitive simplifia radicalement la programmation sans sacrifier les performances. Microsoft venait de créer une option crédible pour développer des jeux sous Windows. Le marché vidéoludique explosait, et la bataille entre DirectX et OpenGL commença pour de bon.
John Carmack, l'architecte principal d'id Software, ne mâcha pas ses mots en décembre 1996. Il jugea DirectX « terriblement défectueux », une API qui imposait des contraintes absurdes aux programmeurs sans rien apporter en retour. D'autres développeurs reconnus bombardèrent Microsoft de lettres, tous préconisaient l'adoption d'OpenGL.
Microsoft organisa des démonstrations comparatives pour prouver la supériorité de DirectX. Ces tests furent contestés : les méthodes de comparaison semblaient douteuses. Les débats tournaient souvent autour des performances en rendu logiciel, un aspect qui perdrait vite de son importance avec l'arrivée de cartes graphiques puissantes et abordables.
DirectX s'imposa malgré les polémiques. L'API intégrait des outils complets pour gérer le son et les périphériques d'entrée. Le marché Apple pesait peu, ce qui réduisait l'intérêt de la compatibilité multiplateforme. DirectX savait aussi interroger les capacités du matériel graphique, un atout appréciable.
L'architecture technique s'appuyait sur COM (Component Object Model), ce qui permettait de l'utiliser depuis C++, C# ou Visual Basic. Le C pur restait possible, au prix d'une complexité accrue. DirectX progressa de concert avec OpenGL dans le support des shaders personnalisés, permettant aux programmeurs un contrôle fin sur le pipeline graphique.
DirectX 8 abandonna DirectDraw, l'API 2D qui avait longtemps constitué un pilier du système. Trois ans plus tard, DirectX 10 débarqua avec Windows Vista après un développement mené en collaboration avec les créateurs d'applications et les fabricants de matériel.
L'apport majeur de DirectX 10 fut le geometry shader, une nouvelle étape programmable dans le pipeline graphique. Placé entre le traitement des sommets et la rastérisation, il pouvait générer jusqu'à 1 024 primitives à partir d'une seule entrée. Les concepteurs maintinrent certaines étapes en fonctionnalité fixe, préférant les performances à une flexibilité totale.
DirectX 10 standardisa le traitement des différentes étapes programmables via un « cœur commun ». Cette machine virtuelle unifia la gestion des registres d'entrée-sortie, des registres temporaires et des points de liaison des ressources. Elle utilisait un langage assembleur 32 bits, mais Microsoft encourageait l'emploi du langage de haut niveau HLSL (High Level Shading Language) pour programmer les shaders.
La technologie n'a cessé d'évoluer depuis. Microsoft voulait garder Windows attractif pour les créateurs de jeux, quitte à essuyer des critiques sur ses pratiques commerciales et sa stratégie de verrouillage. DirectX est devenu un standard incontournable de l'industrie vidéoludique.
Une API contestée à ses débuts s'est muée en solution de référence grâce à des améliorations techniques bien pensées et une compréhension aiguë des besoins des développeurs. Les choix techniques et stratégiques pèsent dans l'évolution des technologies, se mêlant aux enjeux commerciaux et aux dynamiques communautaires.