Esiste qualcosa come XNA per c ++? [chiuso]


18

Adoro le funzionalità di XNA ma voglio entrare nel gioco dev c ++. Il problema è che ora devo preoccuparmi di tutto, dal caricamento di un file png all'apertura di una finestra. Questo è un po 'fastidioso.

Vorrei davvero una versione c ++ di XNA per risolvere questi problemi per me.


Dovresti dare un'occhiata a DirectX Tool Kit se non l'hai già ... È una libreria C ++ per la programmazione di Direct3D 11 che prende in prestito esplicitamente dal design di classe di XNA Game Studio.
Chuck Walbourn,

Risposte:


16

Consiglierei di guardare SFML e Polycode .

Penso che le risposte qui siano un po 'carenti. È fastidioso dover collegarsi a dieci diverse librerie, come Freetype, libpng, tinyxml, Ogg, Vorbis, ecc., Per ottenere alcune funzionalità XNA di base.


SFML

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

SFML è un'API C ++ multimediale gratuita che ti offre un accesso di basso e alto livello a grafica, input, audio, ecc. In un certo senso, è simile a XNA ma non ti tiene tanto in mano. Ad esempio, SFML non ha una classe Model.


Se hai intenzione di utilizzare i modelli nei tuoi giochi, dovresti guardare usando Assimp .

Assimp aggiunge il supporto per l'importazione dei seguenti formati:

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 è un framework multipiattaforma gratuito, open source per codice creativo. Puoi usarlo come API C ++ o come linguaggio di scripting autonomo per ottenere un accesso facile e semplice a grafica 2D e 3D accelerata, shader hardware, programmazione audio e di rete, motori fisici e altro ancora.

L'API Polycode di base è scritta in C ++ e può essere utilizzata per creare applicazioni native portatili.

Oltre all'API C ++ di base, Polycode offre un sistema di scripting basato su Lua con un proprio set di strumenti di compilazione. L'API Lua rispecchia l'API C ++ e può essere utilizzata per creare facilmente prototipi e persino pubblicare applicazioni complete su più piattaforme senza compilare C ++.

Polycode è open source, il che significa che puoi imparare da come vengono fatte le cose dietro le quinte. Inoltre, utilizza Assimp per caricare i modelli, quindi non è necessario preoccuparsi del collegamento manuale ad Assimp.


Chiarimenti minori: Polycode non usa assimp per caricare i modelli, ma piuttosto ha uno strumento basato su assimp per convertire i modelli in un formato che può caricare.
cib

4

Ci sono letteralmente centinaia di librerie là fuori che gestiscono tutti i tipi di aspetti dello sviluppo del gioco. Dal caricamento delle immagini, all'apertura e gestione delle finestre, al rendering, al suono, alla fisica, ecc.

Ciò che non ci sono sono moltissime soluzioni "one-stop-shop", dove puoi ottenere tutto in una volta. Questo è uno dei vantaggi di XNA. Generalmente devi mettere insieme molte librerie per costruire un motore. Questo ti dà una grande flessibilità, come se mancasse un componente, puoi (relativamente) facilmente sostituirlo con un altro. Ma allo stesso tempo, richiede più lavoro.

Davvero, perché sei così bloccato da quale linguaggio di programmazione vuoi usare? Mi sembra che ti piaccia davvero XNA e vuoi usarlo per lo sviluppo di giochi. Quindi vai a farlo.


3

All'inizio puoi usare D3DX e DXUT, che non sono ripieni come XNA ma aiutano molto nell'impostare l'ambiente, come creare una finestra, eseguire il ciclo principale e avere alcune utili funzioni come D3DX11CreateTextureFromFile () - dovrai comunque gestire il puntatore, ma non è così difficile. Ci sono anche molte librerie che puoi usare in C ++, che puoi sostituire con le tue se vuoi migliorare le prestazioni o qualunque cosa tu voglia cambiare.

Le librerie D3DX e DXUT sono le più adatte per D3D9 e 10 e DXUT viene fornito con il suo codice sorgente. Per DX11 hanno eliminato alcune funzioni da quelle librerie, ma spero che abbiano ancora quelle più utili, e se ricordo bene ora forniscono il framework di effetti in forma di codice sorgente (perché se hai la pazienza di esplorarlo).

Ho imparato molto di più lavorando a livelli inferiori rispetto alle piramidi di framework, quindi non posso dire che usi XNA, ma ciò dipende principalmente dai tuoi obiettivi.


Tutte le versioni di D3DX sono obsolete. Le librerie di utilità "moderne" di Direct3D 11.x sono DirectXTex , DirectXTK e DirectXMesh più DirectXMath nell'SDK di Windows 8.x. L'ultima versione di Effects 11 e DXUT11 è su CodePlex per persone che stanno eseguendo il porting di basi di codice più vecchie e sono soddisfatte solo con le app desktop Win32.
Chuck Walbourn,

1

Se stai acquisendo familiarità con il linguaggio c ++, ti consiglierei di utilizzare una semplice libreria come SDL per ottenere esperienza nello sviluppo di giochi e quindi programmare usando openGL.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.