Existe-t-il quelque chose comme XNA pour c ++? [fermé]
18
J'adore les fonctionnalités de XNA mais je veux me lancer dans le développement de jeux c ++. Le problème est que je dois maintenant m'inquiéter de tout, du chargement d'un fichier png à l'ouverture d'une fenêtre. C'est un peu ennuyeux.
J'aimerais vraiment une version c ++ de XNA pour résoudre ces problèmes pour moi.
Vous devriez jeter un œil à DirectX Tool Kit si vous ne l'avez pas déjà fait ... C'est une bibliothèque C ++ pour la programmation Direct3D 11 qui emprunte explicitement à la conception de la classe XNA Game Studio.
Chuck Walbourn
Réponses:
16
Je recommanderais que vous regardiez SFML et Polycode .
Je pense que les réponses ici manquent un peu. Il est ennuyeux de devoir se connecter à dix bibliothèques différentes, telles que Freetype, libpng, tinyxml, Ogg, Vorbis, etc., pour obtenir des fonctionnalités XNA de base.
SFML est une API C ++ multimédia gratuite qui vous offre un accès de bas et de haut niveau aux graphiques, aux entrées, à l'audio, etc. Dans un sens, son genre est similaire à XNA mais ne vous tient pas autant la main. Par exemple, SFML n'a pas de classe Model.
Si vous prévoyez d'utiliser des modèles dans vos jeux, vous devriez envisager d'utiliser Assimp .
Assimp ajoute la prise en charge de l'importation des formats suivants:
Collada(.dae )Blender3D(.blend )3dsMax3DS(.3ds)3dsMax ASE (.ase )WavefrontObject(.obj )StanfordPolygonLibrary(.ply )AutoCAD DXF (.dxf )LightWave(.lwo )Modo(.lxo )Stereolithography(.stl )
AC3D (.ac )Milkshape3D(.ms3d )Quake I Mesh(.mdl )Quake II Mesh(.md2 )Quake III Mesh(.md3 )Quake III BSP (.pk3 )Biovision BVH (.bvh )DirectX X (.x )BlitzBasic3D(.b3d )Quick3D(.q3d,.q3s )Ogre XML (.mesh.xml )IrrlichtMesh(.irrmesh )NeutralFileFormat(.nff )Sense8WorldToolKit(.nff )ObjectFileFormat(.off )PovRAYRaw(.raw )TerragenTerrain(.ter )3DGameStudio(.mdl )3DGameStudioTerrain(.hmp )IzwareNendo(.ndo )
Polycode est un framework multiplateforme gratuit et open source pour le code créatif. Vous pouvez l'utiliser comme API C ++ ou comme langage de script autonome pour obtenir un accès facile et simple aux graphiques 2D et 3D accélérés, aux shaders matériels, à la programmation du son et du réseau, aux moteurs physiques et plus encore.
L'API principale de Polycode est écrite en C ++ et peut être utilisée pour créer des applications natives portables.
En plus de l'API C ++ de base, Polycode propose un système de script basé sur Lua avec son propre ensemble d'outils de compilation. L'API Lua reflète l'API C ++ et peut être utilisée pour créer facilement des prototypes et même publier des applications complètes sur plusieurs plateformes sans compiler C ++.
Polycode est open source, ce qui signifie que vous pouvez apprendre comment les choses se font dans les coulisses. En outre, il utilise Assimp pour charger des modèles, vous n'avez donc pas à vous soucier de la liaison manuelle à Assimp.
Précision mineure: Polycode n'utilise pas assimp pour charger des modèles, mais dispose plutôt d'un outil basé sur assimp pour convertir les modèles dans un format qu'il peut charger.
cib
4
Il existe littéralement des centaines de bibliothèques qui gèrent toutes sortes d'aspects du développement de jeux. Du chargement des images à l'ouverture et à la gestion des fenêtres, au rendu, au son, à la physique, etc.
Ce qu’il n’existe pas, ce sont de nombreuses solutions de «guichet unique», où vous obtenez tout en une seule fois. C'est l'un des avantages de XNA. Vous devez généralement rassembler de nombreuses bibliothèques pour créer un moteur. Cela vous donne une grande flexibilité, car si un composant manque, vous pouvez (relativement) facilement l'échanger contre un autre. Mais en même temps, cela demande plus de travail.
Mais vraiment, pourquoi êtes-vous si accroché au langage de programmation que vous souhaitez utiliser? Il me semble que vous aimez vraiment XNA et que vous souhaitez l'utiliser pour le développement de jeux. Alors allez faire ça.
Vous pouvez utiliser le D3DX et le DXUT au début, qui ne sont pas bourrés comme XNA mais aident beaucoup à configurer l'environnement au moins, comme créer une fenêtre, exécuter la boucle principale et avoir des fonctions utiles telles que D3DX11CreateTextureFromFile () - vous devrez cependant gérer le pointeur, mais ce n'est pas si difficile. Il existe également de nombreuses bibliothèques que vous pouvez utiliser en C ++, que vous pouvez remplacer par les vôtres si vous souhaitez améliorer les performances ou tout ce que vous souhaitez modifier.
Les bibliothèques D3DX et DXUT conviennent mieux aux D3D9 et 10, et DXUT est fourni avec son code source. Pour DX11, ils ont supprimé certaines fonctions de ces bibliothèques, mais j'espère qu'elles ont toujours les plus utiles, et si je me souviens bien maintenant, elles fournissent le cadre d'effets sous forme de code source (car si vous avez la patience de l'explorer).
J'ai appris beaucoup plus en travaillant à des niveaux inférieurs qu'à des pyramides de frameworks, donc je ne peux pas vous dire d'utiliser XNA, mais cela dépend principalement de vos objectifs.
Toutes les versions de D3DX sont obsolètes. Les bibliothèques d'utilitaires «modernes» Direct3D 11.x sont DirectXTex , DirectXTK et DirectXMesh plus DirectXMath dans le SDK Windows 8.x. La dernière version des effets 11 et DXUT11 est sur CodePlex pour les personnes qui portent des bases de code plus anciennes et qui sont satisfaites des applications de bureau Win32 uniquement.
Chuck Walbourn
1
Si vous venez de vous familiariser avec le langage c ++, je recommanderais d'utiliser une bibliothèque simple comme SDL pour acquérir de l'expérience dans le développement de jeux puis la programmation en utilisant openGL.
Réponses:
Je recommanderais que vous regardiez SFML et Polycode .
Je pense que les réponses ici manquent un peu. Il est ennuyeux de devoir se connecter à dix bibliothèques différentes, telles que Freetype, libpng, tinyxml, Ogg, Vorbis, etc., pour obtenir des fonctionnalités XNA de base.
SFML
http://www.sfml-dev.org/features.php
SFML est une API C ++ multimédia gratuite qui vous offre un accès de bas et de haut niveau aux graphiques, aux entrées, à l'audio, etc. Dans un sens, son genre est similaire à XNA mais ne vous tient pas autant la main. Par exemple, SFML n'a pas de classe Model.
Si vous prévoyez d'utiliser des modèles dans vos jeux, vous devriez envisager d'utiliser Assimp .
Assimp ajoute la prise en charge de l'importation des formats suivants:
Polycode
http://polycode.org/features/
Polycode est open source, ce qui signifie que vous pouvez apprendre comment les choses se font dans les coulisses. En outre, il utilise Assimp pour charger des modèles, vous n'avez donc pas à vous soucier de la liaison manuelle à Assimp.
la source
Il existe littéralement des centaines de bibliothèques qui gèrent toutes sortes d'aspects du développement de jeux. Du chargement des images à l'ouverture et à la gestion des fenêtres, au rendu, au son, à la physique, etc.
Ce qu’il n’existe pas, ce sont de nombreuses solutions de «guichet unique», où vous obtenez tout en une seule fois. C'est l'un des avantages de XNA. Vous devez généralement rassembler de nombreuses bibliothèques pour créer un moteur. Cela vous donne une grande flexibilité, car si un composant manque, vous pouvez (relativement) facilement l'échanger contre un autre. Mais en même temps, cela demande plus de travail.
Mais vraiment, pourquoi êtes-vous si accroché au langage de programmation que vous souhaitez utiliser? Il me semble que vous aimez vraiment XNA et que vous souhaitez l'utiliser pour le développement de jeux. Alors allez faire ça.
la source
Vous pouvez utiliser le D3DX et le DXUT au début, qui ne sont pas bourrés comme XNA mais aident beaucoup à configurer l'environnement au moins, comme créer une fenêtre, exécuter la boucle principale et avoir des fonctions utiles telles que D3DX11CreateTextureFromFile () - vous devrez cependant gérer le pointeur, mais ce n'est pas si difficile. Il existe également de nombreuses bibliothèques que vous pouvez utiliser en C ++, que vous pouvez remplacer par les vôtres si vous souhaitez améliorer les performances ou tout ce que vous souhaitez modifier.
Les bibliothèques D3DX et DXUT conviennent mieux aux D3D9 et 10, et DXUT est fourni avec son code source. Pour DX11, ils ont supprimé certaines fonctions de ces bibliothèques, mais j'espère qu'elles ont toujours les plus utiles, et si je me souviens bien maintenant, elles fournissent le cadre d'effets sous forme de code source (car si vous avez la patience de l'explorer).
J'ai appris beaucoup plus en travaillant à des niveaux inférieurs qu'à des pyramides de frameworks, donc je ne peux pas vous dire d'utiliser XNA, mais cela dépend principalement de vos objectifs.
la source
Si vous venez de vous familiariser avec le langage c ++, je recommanderais d'utiliser une bibliothèque simple comme SDL pour acquérir de l'expérience dans le développement de jeux puis la programmation en utilisant openGL.
la source