I would recommend that you look at SFML and Polycode.
I think the answers here are kind of missing the point. It is annoying to have to link to ten different libraries, such as Freetype, libpng, tinyxml, Ogg, Vorbis, etc, to get some basic XNA features.
SFML is a free multimedia C++ API that provides you low and high level access to graphics, input, audio, etc. In a sense, its kind of similar to XNA but does not hold your hand as much. For example, SFML does not have a Model class.
If you are planning on using Models in your games, you should look at using Assimp.
Assimp adds support for importing the following formats:
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 is a free, open-source, cross-platform framework for creative
code. You can use it as a C++ API or as a standalone scripting
language to get easy and simple access to accelerated 2D and 3D
graphics, hardware shaders, sound and network programming, physics
engines and more.
The core Polycode API is written in C++ and can be used to create
portable native applications.
On top of the core C++ API, Polycode offers a Lua-based scripting
system with its own set of compilation tools. The Lua API mirrors the
C++ API and can be used to easily create prototypes and even publish
complete applications to multiple platforms without compiling C++.
Polycode is opensource, meaning that you can learn from how things are done behind the scenes. Also, it uses Assimp to load models so you do not need to worry about manually linking to Assimp.