Y a-t-il un avantage à utiliser DX10 / 11 pour un jeu 2D?

10

Je ne suis pas entièrement familier avec l'ensemble de fonctionnalités introduit par le matériel de classe DX10 / 11. Je connais vaguement les nouvelles étapes ajoutées au pipeline graphique programmable, telles que le shader de géométrie, le shader de calcul et les nouvelles étapes de tessellation. Cependant, je ne vois pas comment ces éléments font une grande différence pour un jeu 2D.

Y a-t-il une raison impérieuse de passer au DX10 / 11 (ou aux équivalents OpenGL) pour un jeu 2D, ou serait-il plus sage de s'en tenir au DX9 étant donné qu'une part importante du marché fonctionne toujours avec des technologies plus anciennes (par exemple le Février 2012 Les sondages Steam indiquent que 17% des utilisateurs utilisent toujours Windows XP)?

David Gouveia
la source

Réponses:

5

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 attributedéclarations (avant la insyntaxe 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.

Nicol Bolas
la source
5

Il y a quelques choses que je pense que vous devriez considérer:

  • Si vous avez un moteur D3D9 bien testé, cela ne vaut probablement pas la peine d'être porté sur le D3D11, si vous n'utilisez pas les nouvelles fonctionnalités. En partant de zéro, D3D11 est beaucoup plus tentant.

  • Quelle sera la date de sortie de votre jeu? XP ne sera plus pris en charge dans un peu plus de deux ans, et si vous regardez les données historiques, la base d'installation de XP baisse assez rapidement (~ 1% / mois sur Steam).

  • Considérez quelle proportion des 17% des utilisateurs XP aurait un PC qui répond aux spécifications minimales pour votre jeu sous D3D9. Plus il est élevé, plus il est utile de les soutenir.

  • DX10 est pratiquement inutile à utiliser pour de nouveaux développements. DX11 fonctionne sur les mêmes systèmes d'exploitation et matériel (via les niveaux de fonctionnalités).

  • DX11 prend en charge un logiciel de rendu (WARP) en tant que périphérique de secours, qui peut être assez rapide pour exécuter un jeu avec de faibles exigences de GPU.

  • Le DX9 natif prend en charge plus de fonctionnalités que le D3D11 lorsqu'il utilise l'un des niveaux de fonctionnalités du D3D9. Heureusement, le matériel DX9 dans les PC compatibles DX10 est rare.

  • Le matériel DX10 / 11 a des capacités beaucoup moins variées, donc si vous faites en sorte que le matériel DX9 utilise WARP, vous n'avez pas à vous soucier des limitations gênantes avec des choses comme des textures sans puissance de deux ou un mappage texel-pixel maladroit .

  • Si votre jeu va être gourmand en matériel, DX11 propose quelques astuces supplémentaires pour augmenter les performances. Multi-threading du code de dessin par exemple.

Adam
la source
Je suis un peu confus au sujet des niveaux de fonctionnalités. Si je développe en utilisant DX11 mais en ciblant un niveau de fonctionnalité DX9, je comprends qu'il fonctionnera sur du matériel DX9. Mais nécessitera-t-il toujours le runtime DX11, c'est-à-dire qu'il fonctionnera sur Windows XP?
David Gouveia
DX11 ne fonctionne pas du tout sous XP. Les niveaux de fonctionnalités vous permettent d'utiliser l'API DX11 avec du matériel plus ancien. Consultez msdn.microsoft.com/en-us/library/ff476876%28v=vs.85%29.aspx pour plus de détails sur ce que chaque niveau de fonctionnalité vous permet de faire.
Adam
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.

Sean Middleditch
la source