Je suis l'auteur de SharpDX, donc mes conseils vont être biaisés, mais je voudrais au moins répondre à certaines de vos préoccupations.
À propos de la documentation SharpDX, l'état actuel est très limité, car j'ai travaillé jusqu'à présent pour rendre l'ensemble de l'API DirectX accessible à partir de .NET et du nouveau système d'exploitation Win8. Comme je suis fermé pour terminer de ce côté, je travaille à fournir un site Web complet et quelques articles pour expliquer les concepts clés de SharpDX, et comment vous pouvez en tirer le meilleur parti. Gardez également à l'esprit que ce projet vise principalement à apporter DirectX à .NET, il s'agit donc toujours d'une API de bas niveau. Cela vous oblige donc à creuser un peu dans le comportement de l'API C ++ afin de comprendre comment cela fonctionne. Heureusement, presque toutes les méthodes de SharpDX sont mappées à une seule méthode dans l'API DirectX, il est donc facile de vérifier comment utiliser une méthode en vérifiant l'API DirectX. Le système de documentation qui sera disponible avec SharpDX 2.
SharpDX est-il prêt à être utilisé pour développer un jeu? Bref, oui.
Tout d'abord, j'ai été embauché par une entreprise japonaise pour participer au développement d'un nouveau moteur 3D en C #, et nous utilisons SharpDX pour le backend de rendu sur Windows.
Deuxièmement, j'ai reçu beaucoup de mails privés de développeurs d'entreprises qui utilisent SharpDX pour développer une application multimédia (allant des jeux, éditeur de niveau, publication de photos en ligne ... etc.). Certains de ces clients sont assez gros (malheureusement, je ne peux pas les citer).
Enfin, certains projets open source publics utilisent (ou vont utiliser) SharpDX pour leur rendu principal. Par exemple, Delta Engine utilise déjà SharpDX pour son rendu Direct3D11 (qui sera également disponible pour Win8). Le projet ANX à venir (un successeur XNA open source) utilise également SharpDX pour le rendu, les manettes de jeu et la gestion audio.
Mais SharpDX n'est qu'une étape sur la route pour construire un moteur de jeu, puis un jeu. Parce que l'API est de bas niveau, vous ne pouvez pas vous attendre à avoir le même type de fonctionnalités de haut niveau que celles auxquelles vous étiez habitué avec un framework comme XNA. Mais avec un cadre minimal, vous pourriez faire beaucoup de choses.
Vous pouvez également envisager d'utiliser un produit bien établi comme Unity pour développer des jeux portables en C #.