Sou o autor do SharpDX, então meu conselho será tendencioso, mas gostaria de pelo menos responder sobre algumas de suas preocupações.
Sobre a documentação do SharpDX, o estado atual é muito limitado, pois tenho trabalhado até agora para disponibilizar toda a API do DirectX a partir do .NET e do novo sistema operacional Win8. Como estou fechado para concluir deste lado, estou trabalhando para fornecer um site completo e alguns artigos para explicar os principais conceitos do SharpDX e como você pode obter o melhor dele. Além disso, lembre-se de que este projeto visa principalmente trazer o DirectX para o .NET. Portanto, ainda é uma API de baixo nível. Portanto, é necessário aprofundar um pouco o comportamento da API C ++ para entender como ela está funcionando. Felizmente, quase todos os métodos no SharpDX são mapeados para um único método na API do DirectX, portanto, é fácil verificar como usar um método verificando a API do DirectX. O sistema de documentação que estará disponível com o SharpDX 2.
O SharpDX está pronto para ser usado no desenvolvimento de um jogo? Em resumo, sim.
Primeiro, fui contratado por uma empresa japonesa para participar do desenvolvimento de um novo mecanismo 3D em C # e estamos usando o SharpDX para o backend de renderização no Windows.
Em segundo lugar, recebi muitos e-mails particulares de desenvolvedores de empresas que estão usando o SharpDX para desenvolver aplicativos multimídia (variando de jogos, editor de níveis, publicação de fotos on-line ... etc). Alguns desses clientes são muito grandes (infelizmente, não posso citá-los).
Por fim, alguns projetos públicos de código aberto estão usando (ou vão usar) o SharpDX para a renderização principal de back-end. Por exemplo, o Delta Engine já está usando o SharpDX para a renderização Direct3D11 (que também estará disponível para o Win8). O projeto ANX (um sucessor XNA de código aberto) também está usando o SharpDX para renderização, gamepads e gerenciamento de áudio.
Mas o SharpDX é apenas um passo na estrada para criar um mecanismo de jogo e depois um jogo. Como a API é de baixo nível, você não pode esperar ter o mesmo tipo de recursos de alto nível com os quais estava acostumado com uma estrutura como XNA. Mas com uma estrutura mínima, você pode fazer muitas coisas.
Além disso, você pode considerar usar um produto bem estabelecido como o Unity para desenvolver jogos portáteis em C #.