답변:
SFML 및 Polycode 를 보는 것이 좋습니다 .
나는 여기의 대답이 요점을 놓치고 있다고 생각합니다. 기본적인 XNA 기능을 사용하려면 Freetype, libpng, tinyxml, Ogg, Vorbis 등과 같은 10 개의 서로 다른 라이브러리에 연결해야합니다.
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 ++을 컴파일하지 않고도 프로토 타입을 쉽게 생성하고 전체 플랫폼을 여러 플랫폼에 게시 할 수 있습니다.
폴리 코드는 오픈 소스로, 배후에서 작업이 수행되는 방식을 통해 배울 수 있습니다. 또한 Assimp를 사용하여 모델을로드하므로 Assimp에 수동으로 연결할 필요가 없습니다.
말 그대로 게임 개발의 모든 측면을 처리하는 수백 개의 라이브러리가 있습니다. 이미지로드, 창 열기 및 관리, 렌더링, 사운드, 물리 등
"원 스톱 상점"솔루션이 많지 않아 모든 것을 한 번에 얻을 수 있습니다. 이것이 XNA의 이점 중 하나입니다. 엔진을 만들려면 일반적으로 많은 라이브러리를 함께 가져와야합니다. 따라서 하나의 구성 요소가 부족한 경우 다른 구성 요소로 쉽게 교체 할 수 있습니다. 그러나 동시에 더 많은 작업이 필요합니다.
그러나 실제로 어떤 프로그래밍 언어를 사용하려고합니까? XNA를 정말로 좋아하고 게임 개발에 사용하고 싶은 것 같습니다. 그렇게하세요.
처음에는 D3DX와 DXUT를 사용할 수 있습니다 .XNA와 같은 것은 아니지만 창 만들기, 메인 루프 실행과 같은 환경 설정에 많은 도움이되며 D3DX11CreateTextureFromFile ()과 같은 유용한 기능이 있습니다. 포인터를 관리해야하지만 그렇게 어렵지는 않습니다 . C ++에는 사용할 수있는 라이브러리가 많으므로 성능을 향상 시키거나 변경하려는 항목을 원하는대로 바꿀 수 있습니다.
D3DX 라이브러리와 DXUT는 D3D9와 10에 가장 적합하며 DXUT는 소스 코드와 함께 제공됩니다. DX11의 경우 그들은 그 라이브러리에서 일부 함수를 컬링했지만 여전히 가장 유용한 함수가 있기를 바랍니다. 내가 잘 기억하면 효과 프레임 워크를 소스 코드 형식으로 제공합니다 (탐색 인내심이있는 경우).
필자는 피라미드의 프레임 워크보다 낮은 수준에서 작업 할 때 훨씬 더 많은 것을 배웠으므로 XNA를 사용한다고 말할 수는 없지만 대부분 목표에 달려 있습니다.