Cela dépend de ce que vous faites. Si vous utilisez Direct3D, la seule raison de basculer est d'accéder à des fonctionnalités matérielles que vous ne pouvez pas obtenir autrement.
Pour un jeu 2D, il est théoriquement possible que certaines fonctionnalités vous intéressent. Par exemple, OpenCL ou DirectCompute. Civilization V tire parti de DirectCompute pour décompresser les textures. Cela réduit considérablement le temps de chargement, car il n'a qu'à charger des données compressées. Et les jeux 2D ont souvent beaucoup d'images. Si le temps de chargement est un problème, cela peut aider.
OpneCL devrait être disponible sur tout le matériel GeForce 8xxx et supérieur. Sur ATI, il est disponible sur HD 4xxx et un meilleur matériel.
Je dirais que la plus grande fonctionnalité que vous pourriez utiliser dans DX11 est la possibilité de lire et d'écrire plus arbitrairement des images dans des shaders. Cela pourrait être utile pour certains effets spécialisés. Je ne peux penser à aucun moment ... qui devrait vous dire à quel point cela est important.
En général, je dirais que si vous utilisez D3D, vous ne gagnerez probablement pas beaucoup. Et si vous ne comprenez pas déjà les nouvelles fonctionnalités et que vous souhaitez les utiliser dans votre jeu, vous ne gagnerez certainement pas grand-chose. La plupart d'entre eux vont être plus complexes.
OpenGL est différent pour une raison majeure. OpenGL 2.1 (l'équivalent plus ou moins de D3D9) craint comme API. OpenGL 3.3 (plus quelques extensions plus récentes qui fonctionnent sur du matériel 3.3) améliore beaucoup l'API. Emplacement explicite des attributs, séparation des programmes de shader, tout dans le pack de langue d'ombrage 420 , etc.
Certains d'entre eux fonctionnent assez bien sous forme d'extension contre 2.1. Certains d'entre eux ... ne le font pas. Je ne sais toujours pas s'il est correct d'utiliser des emplacements d'attributs explicites avec des attribute
déclarations (avant la in
syntaxe actuelle ). Shading language pack 420 dit spécifiquement qu'il ne fonctionne pas avec les versions GLSL avant 1.30 (aka: OpenGL 3.0).
Cela ne veut pas dire que GL 2.1 est inutilisable. C'est certainement fonctionnel et fonctionnel, mais pas agréable. Bien que certains pilotes que vous trouverez qui l'implémentent ne soient pas réparables. Le matériel DX9 d'ATI n'est plus pris en charge, donc ces pilotes sont vraiment bogués. Et Intel ne s'est jamais soucié d'OpenGL, donc utiliser des shaders sur leur matériel est un hasard.
Mais personnellement, si votre base d'utilisateurs prévue le permet, je pousserais vers GL 3.3 si vous utilisez OpenGL. Si ce n'est pas le cas, vous n'aurez qu'à gérer les problèmes de 2.1.
Les shaders de géométrie seuls sont une raison d'utiliser D3D10 / 11, si vous prévoyez d'avoir un grand nombre de particules ou de sprites.
DirectCompute peut également être utilisé pour de beaux avantages de vitesse.
Personnellement, le simple fait d'avoir l'API beaucoup plus propre et plus agréable de D3D10 / 11 est une raison suffisante pour ne plus jamais toucher D3D9 ou OpenGL pour des projets uniquement Windows modernes. En réalité, cependant, la nécessité de cibler les appareils mobiles avec GL | ES et la foule toujours importante de WinXP nécessite d'éviter D3D10 / 11 et de s'en tenir à D3D9 ou OpenGL.
Notez que suivre la route OpenGL vous permet d'obtenir des shaders de géométrie, OpenCL et d'autres fonctionnalités matérielles plus récentes, même sur WinXP.
la source