Answers:
我认为这里的答案有点漏了点。必须链接到十个不同的库(例如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 )
多码
Polycode是一个免费的开放源代码,跨平台的创意代码框架。您可以将其用作C ++ API或独立脚本语言,以轻松便捷地访问加速的2D和3D图形,硬件着色器,声音和网络编程,物理引擎等。
核心Polycode API用C ++编写,可用于创建可移植的本机应用程序。
在核心C ++ API之上,Polycode提供了基于Lua的脚本系统以及其自己的编译工具集。Lua API反映了C ++ API,可用于轻松创建原型,甚至将完整的应用程序发布到多个平台,而无需编译C ++。
Polycode是开源的,这意味着您可以从幕后如何做事中学习。另外,它使用Assimp加载模型,因此您不必担心手动链接到Assimp。
实际上有数百个库可以处理游戏开发的各个方面。从加载图像到打开和管理窗口,渲染,声音,物理等等。
没有很多“一站式”解决方案,您可以一次获得所有信息。这就是XNA的好处之一。通常,您必须汇总许多库来构建引擎。这为您提供了极大的灵活性,就好像缺少一个组件一样,您可以(相对)轻松地将其换成另一个。但同时,这需要更多的工作。
真的,为什么您如此想使用哪种编程语言呢?在我看来,您真的很喜欢XNA,并希望将其用于游戏开发。所以去做。
您可以首先使用D3DX和DXUT,它们没有像XNA那样塞满,但至少在设置环境方面有很大帮助,例如创建窗口,运行主循环以及具有一些有用的功能,例如D3DX11CreateTextureFromFile()-你将不得不虽然管理指针,但它不是那难。您还可以在C ++中使用许多库,如果要提高性能或要进行任何更改,可以将其替换为自己的库。
D3DX库和DXUT最适合D3D9和10,并且DXUT带有其源代码。对于DX11,他们从这些库中淘汰了一些功能,但我希望它们仍然具有最有用的功能,如果我现在还记得的话,它们以源代码形式提供了效果框架(如果您有耐心地探索它)。
在较低级别上工作时,我学到的知识远比在框架金字塔上学到的多得多,所以我不能说要使用XNA,但这主要取决于您的目标。