Czy jest coś takiego jak XNA dla c ++? [Zamknięte]

18

Uwielbiam funkcje XNA, ale chcę dostać się do dewelopera gry w C ++. Problem polega na tym, że teraz muszę się martwić o wszystko, od załadowania pliku png po otwarcie okna. To trochę denerwujące.

Naprawdę chciałbym, aby wersja XNA języka C ++ rozwiązała te problemy.

sizicky
źródło
Powinieneś rzucić okiem na DirectX Tool Kit, jeśli jeszcze tego nie zrobiłeś ... To biblioteka C ++ do programowania Direct3D 11, która wyraźnie pożycza z projektu klasy XNA Game Studio.
Chuck Walbourn

Odpowiedzi:

16

Polecam, aby spojrzeć na SFML i Polycode .

Myślę, że w odpowiedziach tutaj brakuje mi sensu. Łączenie się z dziesięcioma różnymi bibliotekami, takimi jak Freetype, libpng, tinyxml, Ogg, Vorbis itp., Jest denerwujące, aby uzyskać podstawowe funkcje XNA.


SFML

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

SFML to darmowy multimedialny interfejs API C ++, który zapewnia niski i wysoki poziom dostępu do grafiki, wejścia, dźwięku itp. W pewnym sensie jest podobny do XNA, ale nie trzyma za rękę. Na przykład SFML nie ma klasy Model.


Jeśli planujesz używać modeli w swoich grach, powinieneś rozważyć użycie Assimp .

Assimp dodaje obsługę importowania następujących formatów:

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 )

Polikod

http://polycode.org/features/

Polycode to darmowa, otwarta na wiele platform platforma dla twórczego kodu. Możesz go używać jako API C ++ lub jako samodzielny język skryptowy, aby uzyskać łatwy i prosty dostęp do przyspieszonej grafiki 2D i 3D, shaderów sprzętowych, programowania dźwięku i sieci, silników fizyki i innych.

Podstawowy interfejs API Polycode jest napisany w C ++ i może być używany do tworzenia przenośnych aplikacji natywnych.

Oprócz podstawowego API C ++, Polycode oferuje oparty na Lua system skryptowy z własnym zestawem narzędzi kompilacyjnych. Interfejs API Lua odzwierciedla interfejs API C ++ i może być używany do łatwego tworzenia prototypów, a nawet publikowania kompletnych aplikacji na wiele platform bez kompilacji C ++.

Polikod to program typu open source, co oznacza, że ​​możesz nauczyć się, jak rzeczy są wykonywane za kulisami. Ponadto używa Assimp do ładowania modeli, więc nie musisz się martwić o ręczne połączenie z Assimp.

zfedoran
źródło
Drobne wyjaśnienie: Polycode nie używa assimp do ładowania modeli, ale ma narzędzie oparte na assimp do konwersji modeli do formatu, który może załadować.
cib
4

Istnieją dosłownie setki bibliotek, które obsługują wszystkie aspekty rozwoju gier. Od ładowania zdjęć, do otwierania i zarządzania oknami, renderowania, dźwięku, fizyki itp.

Nie ma zbyt wielu rozwiązań „one-stop-shop”, w których wszystko dostajesz jednocześnie. To jedna z zalet XNA. Na ogół musisz zebrać wiele bibliotek, aby zbudować silnik. Daje to dużą elastyczność, ponieważ jeśli brakuje jednego elementu, możesz (względnie) łatwo zamienić go na inny. Ale jednocześnie wymaga więcej pracy.

Naprawdę jednak, dlaczego tak nie rozumiesz, jakiego języka programowania chcesz używać? Wydaje mi się, że naprawdę lubisz XNA i chcesz go wykorzystać do tworzenia gier. Więc zrób to.

Nicol Bolas
źródło
3

Na początku możesz korzystać z D3DX i DXUT, które nie są wypychane jak XNA, ale co najmniej pomagają w ustawianiu środowiska, na przykład tworząc okno, uruchamiając główną pętlę i mając kilka przydatnych funkcji, takich jak D3DX11CreateTextureFromFile () - będziesz musiał jednak zarządzać wskaźnikiem, ale nie jest to takie trudne. Istnieje również wiele bibliotek, których możesz używać w C ++, które możesz zastąpić własnymi, jeśli chcesz poprawić wydajność lub cokolwiek, co chcesz zmienić.

Biblioteki D3DX i DXUT najlepiej nadają się do D3D9 i 10, a DXUT zawiera kod źródłowy. W przypadku DX11 usunęli niektóre funkcje z tych bibliotek, ale mam nadzieję, że nadal są najbardziej przydatne, i jeśli dobrze pamiętam, dostarczają one ramkę efektów w postaci kodu źródłowego (na przykład, jeśli masz cierpliwość, aby je zbadać).

Nauczyłem się znacznie więcej, pracując na niższych poziomach niż nad piramidami szkieletów, więc nie mogę powiedzieć, że używasz XNA, ale to zależy głównie od twoich celów.

Pablo Ariel
źródło
Wszystkie wersje D3DX są przestarzałe. „Nowoczesne” biblioteki narzędzi Direct3D 11.x to DirectXTex , DirectXTK i DirectXMesh plus DirectXMath w Windows 8.x SDK. Najnowsza wersja efektów 11 i DXUT11 znajduje się w CodePlex dla osób, które przenoszą starsze bazy kodu i są zadowolone tylko z aplikacji klasycznych Win32.
Chuck Walbourn
1

Jeśli dopiero zaczynasz zapoznawać się z językiem c ++, polecam korzystanie z prostej biblioteki, takiej jak SDL, aby uzyskać doświadczenie w tworzeniu gier, a następnie programowaniu przy użyciu OpenGL.

Kiran
źródło