50 votes

Comparaison entre XNA et DirectX (C #)

En termes de développement PC (hors Xbox et Zune),

Quelle est la différence entre XNA et C # DirectX? Est-ce que C # DirectX a un avantage significatif sur XNA (en termes de rapidité, de redevances, etc.)?

Comment sont les deux comparés à la vitesse C ++ DirectX non géré?

Où l'industrie évolue-t-elle en termes de programmation de jeux?

53voto

Soviut Points 26384

Si vous êtes bon à l'écriture de code non managé, alors vous serez probablement en mesure d'écrire plus rapidement le moteur graphique sur le dessus de DirectX. Cependant, pour les amateurs, XNA a beaucoup de performance, à la fois en 2D et 3D de développement d'un jeu.

Voici un bon Canal 9 de la vidéo où ils exécutent un XNA construit jeu de course sur Xbox 360. Il fonctionne bien, même en full HD. Plusieurs des jeux XBox Live Arcade ont été développés par la communauté XNA.

Dans la mesure du C# DirectX, je me souviens, Géré DirectX comme on l'appelait, n'est plus officiellement supporté depuis XNA fondamentalement, elle remplace. J'ai peut-être tort, sa fait très longtemps que je l'ai regardé.

Les différences de performances sont négligeables entre XNA et Géré DirectX depuis, en essence, ils sont de la même chose; XNA a juste un peu de confort bits pour réduire la quantité de code réutilisable, vous avez besoin d'écrire.

31voto

paulecoyote Points 1399

Le Xna Game Studio truc est centrée autour de la résolution de jeu centré sur les problèmes, mais je m'interroge sur une affiche qui dit que la performance du Xna game studio truc est pire que géré direct x sans voir quelques bons paramètres.

Un groupe indépendant à l'extérieur de la sp ont créé un projet appelé SlimDx - http://slimdx.mdxinfo.com/ Si vous écrivez une application plutôt qu'un jeu (que j'attends de vous ne sont pas par les autres questions) c'est peut-être la peine d'envisager.

L'industrie est encore largement utilise C++ pour le jeu tripes, mais il y a eu des versions à succès de jeux entièrement écrit en code managé à l'aide de XNA Game Studio sur la communauté de la section des jeux de XBox live, et sorti sur le XBox Arcade. Il devrait y avoir quelques statistiques intéressantes à venir très bientôt sur la façon dont beaucoup de gens ont fait sur la communauté des jeux.

De nombreux prix plein de jeux utiliser C++ pour certains, mais quelque chose comme Lua pour jeu de logique... et Lua n'est pas connu pour la vitesse de l'éclair!

C# a une bonne courbe d'apprentissage et est utilisée par les outils de programmeurs dans l'industrie, il serait un langage utile à avoir sous votre ceinture. C++ serait un excellent langage, mais cela exige plus de discipline pour créer le code fonctionnel - et donne à quelqu'un de nouveau beaucoup plus de corde pour pendre eux-mêmes. C# peut modifier dynamiquement et faire des choses comme le dérouler les boucles lors de l'exécution plutôt que le temps de compilation - bon C# peut être aussi rapide ou plus rapide que bien lisible, C++, mais vous devez savoir comment l'utiliser. Dans de très boucles serrées, C++ et Assembleur pourrait l'emporter dans certaines circonstances. Souvent, dans les jeux à l'aide de C++, la coutume allocateurs sont créés avec leurs propres stratégies de mémoire pour aider et essayer de la fragmentation causée par des allocateurs... ce genre de chose est traitée par le CLR .Net/C# et aussi longtemps que vous le programme pour les ramasseurs d'ordures forces (le même que vous avez à faire avec votre propre implémentation C++), alors vous n'avez pas à vous préoccuper de ce faible niveau de détail de l'implémentation .Net.

Si vous cherchez à obtenir dans le développement de jeux et de décider sur une langue (qui, en lisant entre les lignes semble être l'endroit où vous allez avec cette ligne de questionnement), puis les meilleurs de la langue à utiliser est celui où vous avez un projet achevé à la fin de celui-ci, C++, objective-C, C#, Flash, Silverlight, etc. Que les langues de changer et d'aller dans et hors de la faveur, souvent, les recruteurs de rechercher la preuve de la maîtrise de différentes langues - ce qui pourrait atténuer ne sachant pas celui qu'ils utilisent actuellement et un portefeuille de travail complété le ferait.

17voto

Robert MacLean Points 18288
  1. XNA et DirectX sont très différentes mises en œuvre pour résoudre le même problème - haute performance graphique des programmes intensifs. Les deux support 2D, 3D, audio et de composants réseau. DirectX est pas géré seulement où XNA est le code managé.
  2. Il est géré de mise en œuvre de DirectX qui est un wrapper autour de l'DirectX appels, mais qui n'est pas mis à jour après la version actuelle donc je ne voudrais pas ennuyer avec elle.
  3. XNA n'est pas un wrapper autour de la non géré DirectX. Il utilise des pièces de DirectX, mais il n'est pas un wrapper.
  4. L'industrie semble encore très bien défini sur non géré DirectX - je dis ça parce que toutes les grandes sociétés de moteur sont toujours de codage en C++, ASM et supportant DirectX (soit uniquement soit en conjonction avec OpenGL pour Linux/Mac versions). Le fait Microsoft est "tomber" le DirectX wrapper géré et dire aux gens d'utiliser XNA montre qu'ils sont en train de pousser les développeurs gérés.

5voto

Dave Maff Points 423

À l'heure actuelle, il semble que Microsoft n'envisage pas de prendre en charge XNA dans les applications de style Metro. SharpDx est une alternative à XNA et au "Managed DirectX" désormais obsolète. Cela peut être utilisé pour créer des applications de style Metro et a été comparé favorablement à XNA, à SlimDX et au pack de code Windows API.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X