DirectX, pourquoi ?
Et bien pour les jeux !
Au tout début de l'ère informatique (il n'y a pas si longtemps que cela d'ailleur), pour faire du graphisme, on utilisait des caractères. et ce n'était pas trop difficile, on indiquait à la carte graphique: "affiche un A", et il se débrouillait pour afficher le A. Pour les jeux, il n'y avait rien d'exceptionnel graphiquement parlant...
Puis arrive dans les années 80, des machines comme le 800XL. Là cela commence à se compliquer: Il existe plusieurs modes textes et aussi plusieurs modes graphiques. Dans ces modes graphiques, il devient plus compliquer d'afficher une lettre, il faut en effet dessiner chaques points de la lettre. l'ennui:il existe plusieurs modes graphiques, et donc autant de routines pour l'affichage.
Puis arrivent des mahines comme le ST ou l'Amiga. Là, le mode texte n'existe plus, mais pour simplifier le travail des développeurs, le système d'exploitation va mettre à disposition des développeurs des fonctions permettant d'afficher "simplement" du texte ou du graphisme. Seulement, ces fonctions consomment énormement de temps CPU. Car c'est toujours le CPU qui va effectuer tout le travail. Les cartes graphiques restant assez basic: afficher un point ou non...
De plus, ces fonctions sont elles mêmes très gourmandes en temps CPU et donc lentes. Au final, pour les jeux, il sera rare d'utiliser ces fonctions, les programmeurs préféreront se redévelopper leurs propres routines qui restera spécifique à un mode graphique: rapides mais difficilement portables.
Les constructeurs voyant cela se disent qu'il est temps que les cartes graphiques soient un peu plus intelligentes ailleur que sur des stations de travail et on va donc trouver des blitter permettant des transferts rapides de données de la ram vers la vidéo tout en laissant tranquille le CPU, accélérant ainsi les fonctions graphiques du système. Mais les développeurs se diront qu'ils peuvent aller encore plus vite et cela ne fera que multiplier le nombre de codes...
Dans le monde du PC, les joueurs ne sont pas très intéréssés ou attirés par ces machines, les résolutions graphiques ne sont pas très intéressantes par rapport aux machines sitées précédemment (CGA, EGA, bof...). Seules les entreprises les utilisent pour des affichages en mode texte.
Bien qu'ayant pris du retard par rapport aux autres machines (entre 80 et 90), tout va brusquement changer. Les cartes graphiques deviennent de plus en plus performantes et rapides (Il y a bien plus qu'un simple blitter, on ajoute de la ram directement sur la carte graphique, ...). Et le phénomène déjà rencontré pour le développement sur les machines précédemment sitées deviendra encore pire. En effet, pour un ST, ou un Amiga, il n'y a qu'un modèle de carte graphique. Par contre, dans le monde du PC, il en existe n autant qu'il y a de constructeurs (et même plus), chacuns voulant imposer sa propre norme. Par conséquent, il devient très difficile de faire ses propres routines (il fallait prendre en compte tous les modèles !). Pour résoudre ce problème, sous DOS tout d'abord, les constructeurs finiront par se mettre d'accord sur une norme : le VESA qui sera intégré dans les bios des nouvelles cartes graphiques. . Toutes les cartes seront alors programmables de la même manière. Et pour les cartes les plus anciennes ne connaissant pas le VESA, des programmes seront mis à disposition pour permettre l'utilisation du VESA dessus.
Sous Windows, Microsoft propose des drivers pour les différentes cartes graphiques, mais peu seront les développeurs à vouloir créer un jeu dans cet environnement plutôt lent et pas terrible. Jusqu'à la version 3.1 qui devient intéressante. Seulement voilà, dans windows par défaut, le développeur n'a jamais accès aux périphériques, il utilise le GDI. C'est très bien pour des applications bureautiques, car cela permet de simplifier les programmes et surtout, d'être complétement indépendant du matériel. Mais pour les jeux, c'est pas terrible: ils sont saccadés, lents, .... C'est alors que des premières versions de SDK vont commencer à faire leurs apparaitions. Mais cela restera lent, les jeux continueront donc à sortir sous DOS ou l'on peut accéder directement aux matériel (en plus, il sera possible en utilsant DOS4GW de bénéficier du 32 bits). Lorsqu'enfin sortira DirectX. Bilou veut abandonner le monde DOS et forcer tout le monde à passer sous Windows. Mais pour cela, il faut impérativement proposer quelque chose qui soit puissant et "facile d'utilisation" et qui permettent d'accéder aux matériels pour développer des jeux comme sous DOS. DirectX sera donc une reprise et une normalisation des kits de développement proposés jusqu'alors pour le développement de jeux sous Windows. Et là, on change la donne:
On se retrouve dans un environnement graphique 32 bits, et on nous donne toutes les fonctions de bases pour initialiser l'écran, travailler avec des écrans logiques et physiques, faire de la 3D et le tout en utilisant les capacités matérielles de la carte graphique et en libérant donc la charge CPU sans avoir à connaître quoi que ce soit de la carte graphique...Quoi demander de plus. Et ce sera la fin des jeux sous DOS.
Mais directX ne s'arrêtera pas au graphisme 2D ou 3D, il y a aussi la gestion du clavier, la souris et le joystick. Une utilisation simplifiée du réseau pour permettre des jeux en réseaux, ainsi qu'une gestion du son (par micro ou haut parleur). En effet, je viens de parler des problèmes posés par les différentes cartes graphiques, mais il y a eu aussi le même problème concernant les cartes sons...
Bien entendu, il ne faudra pas s'attendre à ce que DirectX soit compatible avec un autre outil de développement de jeux : OpenGL (faut pas réver !).