Io non ho mai usato XNA Sad Al fondo c'e' DX. giusto?
E' una versione ulteriormente semplificata delle vecchie implementazioni ad oggetti di DX dei tempi andati. Su di essa poi sono stati introdotti di pattern architetturali standard ed ottimizzati per gestire rendering, multithreading, Live!, calcoli vettoriali, mesh, animazioni, pipeline grafiche programmabili, shader, xact, etc. Insomma, la solita roba di base.
Dulcis in fundo, c'è pure una pipeline dinamica e programmabile per gestire i content di gioco, con la possibilità di scrivere exporter ed importer, nonché di "scalare" i contenuti in base al target di release prescelto (es: downscale di texture e modelli (utilizzando i LOD, ad esempio) per deployare su Zune. La pipeline va molto oltre il content management diventando uno strumento di configurazione per qualsiasi cosa esista in codice e sia parametrizzabile (abbia delle proprietà get/set da manipolare). Esempio pratico: puoi gestirci l'intera timeline di uno shmup, con definizione di ondate, pattern degli avversari, etc...
Prossimamente la pipeline dinamica verrà estesa integreranno anche Silverlight/XAML (una versione moderna di Flash con supporto ad una sintassi a componenti XML-like dichiarativa) per la realizzazione di GUI graficamente e funzionalmente complesse senza bisogno di smazzarsi decine di migliaia di righe di codice, con relativo debug.
Su Windows è già possibile farlo.
Alcuni sono convinti che sia un semplice wrapper stile DX Managed, invece sono interfacce Managed che mappano API native, senza overhead. Altri sostengono che sia una versione semplificata di DX perché hanno tolto tutte le API non legate al gaming (mancano quasi tutte le modalità di rendering tipiche del CAD). Poi ci sono delle funzionalità aggiuntive, che per un programmatore C++ sembrano miracolose ma che sono semplicemente feature di base di .NET.
Ovviamente tutto questo lo si può lasciare Managed (ormai l'overhead è quasi nullo e l'ottimizzazione adattativa di .NET spesso rende meglio sui loop di gioco molto complessi di quanto non faccia un'ottimizzazione nativa automatica), oppure precompilare in nativo ahead of time prima di fare il publish del pacchetto (XBOX/Zune) o al momento dell'installazione (Windows).