Soy el autor de SharpDX, por lo que mi consejo será parcial, pero al menos me gustaría responder sobre algunas de sus inquietudes.
Acerca de la documentación de SharpDX, el estado actual es muy limitado, ya que he estado trabajando hasta ahora para que toda la API de DirectX sea accesible desde .NET y el nuevo sistema operativo Win8. Como estoy cerrado para terminar de este lado, estoy trabajando para proporcionar un sitio web completo y algunos artículos para explicar los conceptos clave de SharpDX y cómo puede obtener lo mejor de él. Además, tenga en cuenta que este proyecto es principalmente para llevar DirectX a .NET, por lo que sigue siendo una API de bajo nivel. Por lo tanto, requiere profundizar un poco en el comportamiento de la API de C ++ para comprender cómo funciona. Afortunadamente, casi todos los métodos en SharpDX se asignan a un solo método en la API de DirectX, por lo que es fácil verificar cómo usar un método verificando la API de DirectX. El sistema de documentación que estará disponible con SharpDX 2.
¿SharpDX está listo para ser usado para desarrollar un juego? En resumen, sí.
En primer lugar, una empresa japonesa me contrató para participar en el desarrollo de un nuevo motor 3D en C #, y estamos utilizando SharpDX para el backend de renderizado en Windows.
En segundo lugar, he recibido muchos correos privados de desarrolladores de compañías que utilizan SharpDX para desarrollar aplicaciones multimedia (que van desde juegos, editor de niveles, publicación de fotos en línea ... etc.). Algunos de estos clientes son bastante grandes (desafortunadamente, no puedo citarlos).
Por último, algunos proyectos públicos de código abierto están utilizando (o van a utilizar) SharpDX para su representación principal de back-end. Por ejemplo, Delta Engine ya está utilizando SharpDX para su representación Direct3D11 (que también estará disponible para Win8). El próximo proyecto ANX (un sucesor XNA de código abierto) también está utilizando SharpDX para el renderizado, gamepads y gestión de audio.
Pero SharpDX es solo un paso en el camino para construir un motor de juego, y luego un juego. Debido a que la API es de bajo nivel, no puede esperar tener el mismo tipo de características de alto nivel a las que estaba acostumbrado con un marco como XNA. Pero con un marco mínimo, podrías hacer muchas cosas.
Además, podría considerar usar un producto bien establecido como Unity para desarrollar juegos portátiles en C #.