Gibt es so etwas wie XNA für C ++? [geschlossen]

18

Ich liebe die Funktionen von XNA, aber ich möchte in die Entwicklung von C ++ - Spielen einsteigen. Das Problem ist, dass ich mich jetzt um alles kümmern muss, vom Laden einer PNG-Datei bis zum Öffnen eines Fensters. Das ist ein bisschen nervig.

Ich hätte wirklich gerne eine C ++ - Version von XNA, um diese Probleme für mich zu lösen.

sizicky
quelle
Sie sollten sich das DirectX Tool Kit ansehen, wenn Sie es noch nicht getan haben ... Es ist eine C ++ - Bibliothek für Direct3D 11-Programmierung, die explizit aus dem Design der XNA Game Studio-Klasse stammt.
Chuck Walbourn

Antworten:

16

Ich würde empfehlen, dass Sie sich SFML und Polycode ansehen .

Ich denke, die Antworten hier verpassen irgendwie den Punkt. Es ist ärgerlich, sich mit zehn verschiedenen Bibliotheken wie Freetype, libpng, tinyxml, Ogg, Vorbis usw. verbinden zu müssen, um einige grundlegende XNA-Funktionen zu erhalten.


SFML

http://www.sfml-dev.org/features.php

SFML ist eine kostenlose Multimedia-C ++ - API, mit der Sie auf niedriger und hoher Ebene auf Grafiken, Eingaben, Audio usw. zugreifen können. In gewisser Weise ähnelt es XNA, hält aber nicht so viel von Ihrer Hand. Zum Beispiel hat SFML keine Model-Klasse.


Wenn Sie vorhaben, Models in Ihren Spielen zu verwenden, sollten Sie Assimp verwenden .

Assimp bietet Unterstützung für den Import der folgenden Formate:

Collada ( .dae )
Blender 3D ( .blend )
3ds Max 3DS ( .3ds )
3ds Max ASE ( .ase )
Wavefront Object ( .obj )
Stanford Polygon Library ( .ply )
AutoCAD DXF ( .dxf )
LightWave ( .lwo )
Modo ( .lxo )
Stereolithography ( .stl )
AC3D ( .ac )
Milkshape 3D ( .ms3d )
Quake I Mesh ( .mdl )
Quake II Mesh ( .md2 )
Quake III Mesh ( .md3 )
Quake III BSP ( .pk3 )
Biovision BVH ( .bvh )
DirectX X ( .x )
BlitzBasic 3D ( .b3d )
Quick3D ( .q3d,.q3s )
Ogre XML ( .mesh.xml )
Irrlicht Mesh ( .irrmesh )
Neutral File Format ( .nff )
Sense8 WorldToolKit ( .nff )
Object File Format ( .off )
PovRAY Raw ( .raw )
Terragen Terrain ( .ter )
3D GameStudio ( .mdl )
3D GameStudio Terrain ( .hmp )
Izware Nendo ( .ndo )

Polycode

http://polycode.org/features/

Polycode ist ein kostenloses, plattformübergreifendes Open-Source-Framework für Creative-Code. Sie können es als C ++ - API oder als eigenständige Skriptsprache verwenden, um einfachen und schnellen Zugriff auf beschleunigte 2D- und 3D-Grafiken, Hardware-Shader, Sound- und Netzwerkprogrammierung, Physik-Engines und mehr zu erhalten.

Die Kern-Polycode-API ist in C ++ geschrieben und kann zum Erstellen portabler nativer Anwendungen verwendet werden.

Neben der Kern-C ++ - API bietet Polycode ein Lua-basiertes Skriptsystem mit eigenen Kompilierungswerkzeugen. Die Lua-API spiegelt die C ++ - API wider und kann verwendet werden, um auf einfache Weise Prototypen zu erstellen und sogar vollständige Anwendungen auf mehreren Plattformen zu veröffentlichen, ohne C ++ kompilieren zu müssen.

Polycode ist Open Source, das heißt, Sie können lernen, wie Dinge hinter den Kulissen getan werden. Außerdem wird Assimp zum Laden von Modellen verwendet, sodass Sie sich nicht um das manuelle Verknüpfen mit Assimp kümmern müssen.

Zfedoran
quelle
Kleinere Erläuterungen: Polycode verwendet assimp nicht zum Laden von Modellen, sondern verfügt über ein assimp-basiertes Tool zum Konvertieren von Modellen in ein Format, das geladen werden kann.
Cib
4

Es gibt buchstäblich Hunderte von Bibliotheken, die sich mit allen möglichen Aspekten der Spieleentwicklung befassen. Vom Laden von Bildern über das Öffnen und Verwalten von Fenstern, das Rendern, den Ton und die Physik usw.

Was es nicht gibt, sind sehr viele "One-Stop-Shop" -Lösungen, bei denen Sie alles auf einmal bekommen. Das ist einer der Vorteile von XNA. Im Allgemeinen müssen Sie viele Bibliotheken zusammenführen, um eine Engine zu erstellen. Dies gibt Ihnen eine große Flexibilität, denn wenn eine Komponente fehlt, können Sie sie (relativ) leicht gegen eine andere austauschen. Gleichzeitig ist jedoch mehr Arbeit erforderlich.

Wirklich aber, warum bist du so aufgehängt, welche Programmiersprache du benutzen willst? Mir scheint, dass Sie XNA wirklich mögen und es für die Spieleentwicklung verwenden möchten. Also mach das.

Nicol Bolas
quelle
3

Sie können zuerst das D3DX und das DXUT verwenden, die nicht wie XNA gefüllt sind, aber viel zum Einstellen der Umgebung beitragen, z. B. das Erstellen eines Fensters, das Ausführen der Hauptschleife und einige nützliche Funktionen wie D3DX11CreateTextureFromFile () - Sie müssen den Zeiger zwar verwalten, aber es ist nicht so schwer. Es gibt auch viele Bibliotheken, die Sie in C ++ verwenden können und die Sie durch Ihre eigenen ersetzen können, wenn Sie die Leistung verbessern oder was auch immer Sie ändern möchten.

Die D3DX-Bibliotheken und das DXUT sind am besten für D3D9 und 10 geeignet, und DXUT wird mit seinem Quellcode geliefert. Für DX11 haben sie einige Funktionen aus diesen Bibliotheken entfernt, aber ich hoffe, sie haben immer noch die nützlichsten, und wenn ich mich recht gut erinnere, stellen sie das Effekt-Framework in Quellcode-Form zur Verfügung (falls Sie die Geduld haben, es zu untersuchen).

Ich habe viel mehr gelernt, wenn ich auf niedrigeren Ebenen gearbeitet habe als über Pyramiden von Frameworks. Daher kann ich nicht sagen, dass Sie XNA verwenden, aber das hängt hauptsächlich von Ihren Zielen ab.

Pablo Ariel
quelle
Alle Versionen von D3DX sind veraltet. Die 'modernen' Direct3D 11.x-Dienstprogrammbibliotheken sind DirectXTex , DirectXTK und DirectXMesh plus DirectXMath im Windows 8.x-SDK. Die neueste Version von Effects 11 und DXUT11 ist auf CodePlex für Leute, die ältere Codebasen portieren und nur mit Win32-Desktop-Apps zufrieden sind.
Chuck Walbourn
1

Wenn Sie sich nur mit der Sprache C ++ vertraut machen, empfehle ich die Verwendung einer einfachen Bibliothek wie SDL, um Erfahrung in der Spieleentwicklung zu sammeln und anschließend mit OpenGL zu programmieren.

Kiran
quelle