Eu li muitas perguntas interessantes sobre XNA x OpenTK x SlimDX x OpenGL x DX, e embora seja realmente útil obter outras impressões gerais de centenas de horas usando essas várias APIs / Frameworks, não vi qualquer resposta que defina claramente qual é o escopo de cada um.
Entendeu-se qual é a diferença entre uma API, mecanismo e estrutura, em teoria, mas para alguém que tem experiência limitada com sistemas gráficos, é mais difícil ver o que, do lado prático, se enquadra em cada categoria. (Não é facilitada por toda a sobreposição! Por exemplo, XNA implementando um pipeline de conteúdo como parte integrante)
Tomemos, por exemplo, seleção de rosto - o XNA 'faz' isso em segundo plano, sem que o programador precise pensar sobre isso, mas onde isso acontece? Existe uma função 'cara de abate' no DX que deve ser chamada ou talvez acima no XNA? Ou a GPU ou seu driver faz isso?
Eu li na documentação de um dos projetos gerenciados (irritantemente não me lembro qual) sobre o quão difícil foi implementar código de renderização eficiente e como esse projeto o abstraiu. Isso me deixou um pouco nervoso e me fez pensar no que o XNA está fazendo sob DrawIndexedPrimitives que teria que ser feito manualmente, caso a estrutura fosse deixada para algo mais flexível.
O que o XNA faz em segundo plano, ao renderizar esse cubo, que uma API gerenciada não faria?