C # com XNA
Como você é novo nisso, o XNA teria a vantagem de também ser um ótimo lugar para começar. Desde a criação de um novo projeto até a exibição de um sprite 2D na tela, são necessárias 5 linhas de código:
private Texture2D texture;
texture = Content.Load<Texture2D>("sprite");
spriteBatch.Begin();
spriteBatch.Draw(texture, Vector2.Zero, Color.White);
spriteBatch.End();
Não fica muito mais fácil do que isso. Também tem a vantagem de ter um monte de amostras educacionais disponíveis para ele.
O problema é seu requisito de desempenho. Mas eu consegui desenhar milhares de sprites antes no XNA sem nenhum problema. No entanto, não havia código de jogabilidade por trás disso, e meu computador é de última geração, portanto os resultados seriam tendenciosos. Mas, com uma otimização cuidadosa, provavelmente funcionaria. Então esta é a minha recomendação.
C # com SharpDX ou SlimDX
Ainda permanecendo no domínio C # gerenciado, você também pode voltar um passo e considerar o uso do SharpDX, que é um novo wrapper gerenciado do DirectX, e eles afirmam que é cerca de 6 vezes mais rápido que o XNA. Isso deve ter energia suficiente para suas necessidades. E é multiplataforma.
Há também o SlimDX a considerar.
C ++ com DirectX / OpenGL
E se você continuar avançando nessa direção, finalmente alcançará o domínio C ++ puro com o DirectX / OpenGL. Se você decidir seguir esse caminho (que, a propósito, será muito mais difícil de lidar nesse estágio), há algumas coisas que você pode fazer para facilitar sua vida.
Por exemplo, você pode usar o SDL para criar a janela para você e cuidar da entrada, e o FMOD para lidar com o áudio, o que eu achei muito mais fácil de trabalhar do que seus colegas nativos.
Também não sei como é hoje em dia, mas na última vez em que trabalhei com eles, achei bastante fácil fazer coisas em 2D no DirectX, graças à classe D3DXSprite, que o IIRC era bastante semelhante ao SpriteBatch da XNA, enquanto no OpenGL I teve que implementar tudo do zero (ou seja, brincar com quads texturizados, projeções ortográficas e implementar o lote).