bah les deux ont des avantages/désavantages:
L'Opengl: est multi-plateforme et expose TOUTES les fontions des cartes 3D par des extensions propriétaires (et c'est là tout la discussion je trouve).
Ce qui veut dire que tu utilises une carte 3D à fond mais tu peux avoir un moteur dédié nVidia ou Ati ou X ( et là la portabilité hum ).
Autre désavantage: les extensions propriétaires sont sujette à royalties, dans le cas ou un fabricant (par exemple SIS) aye une carte qui supporte les mêmes fonctions qu'une autre carte (nVidia ou Ati).
Ce qui veut dire qu'avec deux cartes qui ont le même niveau de fonctionnalitées, la carte de celui qui est arrivé après l'autre, si les programmeurs se basent sur la première carte, devra payer pour avoir les extensions de la première.
Exemple: nVidia a fait des échanges de brevets avec S3 pour pouvoir EXPOSER le S3TC dans les drivers Opengl.
Evidemment ou bout d'un moment des extensions propriétaires sont généreusement -sic- donnés par leur possesseurs ou groupe ARB (Architecture Review Board) de l'OpenGL.
Tu voir dans Quake3 ou autre, les extensions "gratuite" (ARB), et les extensions propriétaires (NV,ATI,S3,KTX....)
DirectX: Uniquement Windows, mais tout ce qui est normalisé par Microsoft est en accès "libre" pour tous les fabricants.
Ie les vertexs/pixels shaders, qui sont issus du R&D de nVidia, mais qui sont accès libre sans royalties pénalisantes à SIS,VIA,Ati... etc etc..
Il n'y a pas de notion d'extension propriétaire.
Si le Hard peut le faire, le driver le déclare.
Sysmétriquement Grosoft cherche à faire une normalisation "propre" sans extensions propriétaires violantes, ce qui fait qu'un Geforce3/4 ou une Radeon 8500 n'ont PAS toutes leurs fonctionnalitées d'exposées dans le DirectX8.
De plus quand tu fait un moteur DirectX 8, tu cibles une cartes 3D DirectX 8 quelle que soit sa marque. Quand tu fait un moteur 3D en OpenGl, bin tu peux avoir un truc dépendant d'une carte précise d'un fabricant.
Le DirectX 8 t'imposes aussi une approche directe par Vertex & Index Buffer, ce qui est la méthode la plus rentable pour une carte T&L.
Alors que l'OpenGl, te pemet de faire du code de porc sans t'en rendre compte au début (je dit bien au début, après tu retombes sur la même chose au final).
A partir du moment ou tu dois mantenir tes modèles 3D en mémoire que ce soit un tableau de vertex maison, ou un vertex buffer ça change pas grand chose.
Donc ça se défends, et ça se vaux, ça dépends jusqu'oû tu veux aller...
Mais je trouve que la portabilité n'est plus là ou on croit qu'elle est..... Et aucun des deux n'a l'avantage sur l'autre.