L'équivalent à OpenGL est Direct3D, pas DirectX.
DirectX est une API qui est vraiment pensée pour le JV (avec possibilité de faire autre chose quand même), qui rassemble tous les éléments nécessaires en une seule API. Genre pour l'affichage 3D, t'as Direct3D.
Le grand avantage de ça, c'est que chaque "module" s'intègre très facilement avec le reste. Dans le genre, tu peux faire du dessin 2D sur un GC 3D sans devoir faire appel à des fonctions spécifiques à la 3D. (Sans DirectX, en général, tu passes par une lib tierce (à tout hasard SDL, histoire d'être portable), et du coup, tu peux plus accéder directement aux pixels de l'écran si tu crées ton GC pour OpenGL (tu te prends une erreur 3
J'ai halluciné la première fois que j'ai vu ça). A la place, tu dois passer par la fonction glDrawPixels + glRasterPos, qui sont pas pratiques du tout (genre ta position de dessin est considérée comme un point "normal" (pour OpenGL, un point, c'est plus que des coordonnées), et donc sujet à être modifié
), ou encore glBitmap qui l'est encore moins.
Bref, y a d'autres problèmes de compatibilité (l'ordre inverse des couleurs + pixels depuis SDL
) entre libs tierces, et ça fait vraiment pas joli.
En plus de ça, DirectX est orientée objet plutôt qu'être une grosse machine à états. Ca paraît accessoire, mais si on reprend notre position de rastérisation, ça évite plein de problèmes. (Genre si tu es pas en mode couleur blanche, tu risques que ton bitmap voie ses couleurs modifiées à l'affichage
)
En gros, s'il faut retenir une chose, c'est que DirectX est bien pensée, et surtout, tu te fais moins ch*er pour du bas niveau. (Ce qui est très pratique, dans le sens où le "bas niveau", c'est de la routine
) D'autant plus qu'avec OpenGL, suivant les libs tierces, tu perds la portabilité. (Genre si tu utilises une API native à un OS, genre WinAPI ou Xlib)
Au fait, Direct3D et OpenGL sont à peu près équivalentes niveau puissance, et j'aime bien utiliser OpenGL aussi. (Je préfère, même
) Mais c'est pas une API qui est pensée pour le jeu vidéo à la base (genre c'est utilisé pour des modellisations d'une manière générale, donc par exemple aussi en médecine (avec des textures 3D et tout et tout
)), et ça se ressent, dès le moment où tu dois faire une couche d'abstraction. (Chose quasi faite avec DirectX, et encapsulée d'office, via Objets)