是否有适用于C ++的XNA?[关闭]


18

我喜欢XNA的功能,但我想参与C ++游戏开发。问题是我现在必须担心从加载png文件到打开窗口的所有事情。这有点烦人。

我真的很想要XNA的C ++版本为我解决这些问题。


如果您还没有的话,应该看看DirectX Tool Kit。它是Direct3D 11编程的C ++库,明确地借鉴了XNA Game Studio类设计。
Chuck Walbourn 2014年

Answers:


16

我建议您查看SFMLPolycode

我认为这里的答案有点漏了点。必须链接到十个不同的库(例如Freetype,libpng,tinyxml,Ogg,Vorbis等),以获得一些基本的XNA功能,这很烦人。


SFML

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

SFML是一个免费的多媒体C ++ API,可为您提供对图形,输入,音频等的低级和高级访问。从某种意义上说,它类似于XNA,但作用不大。例如,SFML没有Model类。


如果您打算在游戏中使用模型,则应该考虑使用Assimp

Assimp添加了对导入以下格式的支持:

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 )

多码

http://polycode.org/features/

Polycode是一个免费的开放源代码,跨平台的创意代码框架。您可以将其用作C ++ API或独立脚本语言,以轻松便捷地访问加速的2D和3D图形,硬件着色器,声音和网络编程,物理引擎等。

核心Polycode API用C ++编写,可用于创建可移植的本机应用程序。

在核心C ++ API之上,Polycode提供了基于Lua的脚本系统以及其自己的编译工具集。Lua API反映了C ++ API,可用于轻松创建原型,甚至将完整的应用程序发布到多个平台,而无需编译C ++。

Polycode是开源的,这意味着您可以从幕后如何做事中学习。另外,它使用Assimp加载模型,因此您不必担心手动链接到Assimp。


稍作说明:Polycode并不使用assimp加载模型,而是使用基于assimp的工具将模型转换为可以加载的格式。
cib 2013年

4

实际上有数百个库可以处理游戏开发的各个方面。从加载图像到打开和管理窗口,渲染,声音,物理等等。

没有很多“一站式”解决方案,您可以一次获得所有信息。这就是XNA的好处之一。通常,您必须汇总许多库来构建引擎。这为您提供了极大的灵活性,就好像缺少一个组件一样,您可以(相对)轻松地将其换成另一个。但同时,这需要更多的工作。

真的,为什么您如此想使用哪种编程语言呢?在我看来,您真的很喜欢XNA,并希望将其用于游戏开发。所以去做。


3

您可以首先使用D3DX和DXUT,它们没有像XNA那样塞满,但至少在设置环境方面有很大帮助,例如创建窗口,运行主循环以及具有一些有用的功能,例如D3DX11CreateTextureFromFile()-你将不得不虽然管理指针,但它不是难。您还可以在C ++中使用许多库,如果要提高性能或要进行任何更改,可以将其替换为自己的库。

D3DX库和DXUT最适合D3D9和10,并且DXUT带有其源代码。对于DX11,他们从这些库中淘汰了一些功能,但我希望它们仍然具有最有用的功能,如果我现在还记得的话,它们以源代码形式提供了效果框架(如果您有耐心地探索它)。

在较低级别上工作时,我学到的知识远比在框架金字塔上学到的多得多,所以我不能说要使用XNA,但这主要取决于您的目标。


不推荐使用所有版本的D3DX。“现代” Direct3D 11.x实用程序库是Windows 8.x SDK 中的DirectXTexDirectXTKDirectXMesh加上DirectXMath。最新版本的Effect 11DXUT11包含在CodePlex上,适合那些正在移植较旧代码库且仅对Win32桌面应用程序满意的人。
Chuck Walbourn 2014年

1

如果您刚刚熟悉c ++语言,我建议您使用一个简单的库(例如SDL)来获得游戏开发经验,然后使用openGL进行编程。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.