Frage

Ich habe eine noobish Frage für jede Grafik-Programmierer.

Ich bin verwirrt, wie einige Spiele (wie Crysis) können sowohl DirectX 9 unterstützen (in XP) und 10 (in Vista)?

Was ich bisher zu verstehen ist, dass, wenn Sie eine DX10 App schreiben, dann kann es nur in Vista läuft.

Vielleicht haben sie zwei Codebasen - eine in DX9 und einen anderen in DX10 geschrieben? Aber ist das nicht zuviel des Guten?

War es hilfreich?

Lösung

Sie haben zwei Rendering-Pipelines, einen mit DX9 Anrufe und einem mit DX10 aufruft. Die APIs sind nicht kompatibel, obwohl eine Mehrheit aller Spiel-Engine kann entweder wiederverwendet werden. Wenn Sie einige Open-Source-Beispiele, wie verschiedene Rendering-Pipelines getan werden wollen, schauen Sie sich so etwas wie Ogre3D, die OpenGL, DX9 unterstützt, und (bald) DX10 Rendering.

Andere Tipps

Die Rendering-Schicht von Spielen ist in der Regel ein recht gut isoliert / abstrahiert Teil der gesamten Anwendung. Soweit die Game-Engine angeht, sind jeder Frame Sie einfach eine Liste der konzeptuellen Objekte Aufbau (Bäume, Figuren, etc.). Wenn der Spiel-Engine ein bestimmtes Objekt zu machen wählt, dann ist es an die Rendering-Schicht auf, wie man tatsächlich diese Absicht in DX Zeichenaufrufe übersetzen. Eine DX10 Rendering wird eine andere Gruppe erzeugt Zieh auf eine DX9 Schicht nennt, aber konzeptionell sind sie immer noch die gleiche Aktion durchführen -. ‚Diesen Baum machen‘

Rendering ist schön abstrahiert, weil es ist selten, dass Sie keine Informationen zurück von der Wiedergabeschicht erhalten möchten, sobald die ‚diesen Baum machen‘ Aktion ausgeführt wird, wird die Game-Engine einfach davon ausgehen, dass die Wiedergabe korrekt aussieht. Es gibt wenig Notwendigkeit, verschiedene mögliche Ergebnisse von DX9 / DX10 Rendering-Anrufen zu handhaben, da 99,9% der Informationen wird von dem Motor zu dem Grafiksystem gehen, und das 0,1%, die kommt zurück kommt wahrscheinlich die gleiche Form zwischen den beiden APIs.

Der Anwendungs-Setup ist ein wenig kitschig, denn du hast das System zu fragen, ob oder nicht DX10 unterstützt wird und anmutig auf DX9 zurückfallen sonst, aber das ist Standard-Tarif für Anwendungs-Setup (in der gleichen Art und Weise, dass die Spiel hat eine Auflösung, Bildwiederholrate, Eingabegerät zu holen, usw.).

Es ist wahrscheinlich, dass sie eine Abstraktionsschicht haben, und sie entwickeln dagegen. Zur Laufzeit instanziiert sie die DX9 oder DX10 Einwickeln Betonmotoren.

Ich stelle mir vor, ihre Abstraktion positioniert ist, in unmittelbarer Nähe der Schicht DirectX und bietet einfach DX9 mit sinnvollen manuellen Implementierungen von DX10-Funktionen oder DX9 Logik verbessert, wenn sie auf DX10 läuft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top