Ich habe viele interessante Fragen zu XNA vs. OpenTK vs. SlimDX vs. OpenGL vs. DX gelesen, und obwohl es wirklich nützlich ist, mit diesen verschiedenen APIs / Frameworks andere allgemeine Eindrücke aus Hunderten von Stunden zu erhalten, habe ich dies nicht getan jede Antwort gesehen, die klar definiert, was der Umfang von jedem ist.
Es ist klar, was der Unterschied zwischen einer API, einer Engine und einem Framework in der Theorie ist, aber für jemanden, der nur begrenzte Erfahrung mit Grafiksystemen hat, ist es schwieriger zu erkennen, was auf der praktischen Seite in jede Kategorie fällt. (Nicht einfacher durch all die Überlappungen! ZB XNA, das eine Inhaltspipeline als integralen Bestandteil implementiert)
Nehmen wir zum Beispiel das Keulen von Gesichtern - XNA "macht" dies im Hintergrund, ohne dass der Programmierer darüber nachdenken muss, aber wo passiert es? Gibt es in DX eine 'Cull Face'-Funktion, die aufgerufen werden muss, oder vielleicht oben in XNA? Oder macht es die GPU oder ihr Treiber?
Ich habe in der Dokumentation zu einem der verwalteten Projekte gelesen (ärgerlicherweise kann ich mich nicht erinnern, welches), wie schwierig es war, effizienten Rendering-Code zu implementieren, und wie dieses Projekt ihn abstrahierte. Dies irritierte mich ein wenig und ließ mich fragen, was XNA unter DrawIndexedPrimitives tut, was manuell durchgeführt werden müsste, wenn das Framework für etwas Flexibleres belassen würde.
Was macht XNA im Hintergrund beim Rendern dieses Cubes, was eine verwaltete API nicht tun würde?