Frage

Wir hatten ein Arcade / Rücknahme Spiel auf Win98 läuft, aber Hardware, die es laufen kann, wird schließlich obsolet gegangen. Das Spiel verwendet eine Reihe von Skalierungseffekte, einige durch den 3D-Pfad und ein paar Tricks zu bewegen Dinge in und aus Videospeicher gespielt. Wenn ich zu unternehmen war die Portierung auf Windows 7 laufen, wie viel Mühe wäre es wahrscheinlich sein? Wäre es meist Neuübersetzung sein, oder haben die APIs solche Transformation unterzogen, dass ich könnte genauso gut neu schreiben die Schnittstellen?

War es hilfreich?

Lösung

Do denken Sie daran nicht zu Win7 als portieren. Einfach nur Port DX9 und lassen DX die Arbeit mit den Win7 Teile tun. Infact, könnten Sie wahrscheinlich lassen Sie es einfach wie es ist und es shuold laufen - aber Sie erwähnen Sie verrückte Dinge mit Videospeicher zu tun, dass ich nichts davon ausgehen, hat mit DX zu tun. (Dh entweder durch GDI oder einen anderen Hack?). Wie auch immer, hat die DX7, 8 und 9 APIs alle ziemlich drastische Unterschiede. Aber das Schöne daran ist, sie sind alle rückwärtskompatibel. Wenn der Code, den Sie ist reine dx7 haben, versuchen Sie gegen die neuesten SDK kompiliert und sehen, ob es auf win7 auf Anhieb funktioniert.

Andere Tipps

Es ist ein gewesen Weile her, seit ich eine DirectX7 Code geschrieben haben (oder Direct X-Code überhaupt), aber wenn ich mich recht erinnere gab es einige signifikante API Ereignis zwischen 7 und 8 verändert - geschweige denn 9 oder 10 -, dass eine solche machen würde ändern ein bisschen schwieriger. Insbesondere denke ich, die große Veränderung war, dass sie das System nach 7 zu fusionieren DirectDraw in Direct3D Refactoring, so dass die beiden Systeme wurden nicht mehr vollständig trennen zwischen 7 und 8 ich nicht auf sie seitdem aussehen, aber ich vermute, dass angesichts der Anzahl der neuen Codierverfahren und wie, dass die API Änderung ziemlich viel hat, so dass es wahrscheinlich ein bisschen ein Projekt sein wird, diese Veränderungen anstatt meist Neuübersetzung zu machen, wie Sie gehofft haben könnten.

Sie jemals bewegt Dinge in und aus Videospeicher? Schauder

Still ... sein schneller das zu tun, jetzt, als wenn DX7 der Nähe war. Was genau haben Sie getan? Aus Ihrer Beschreibung zu sagen, es ist unmöglich, wie einfach es sein würde. Eine DX7 App sollte noch laufen auf Windows 7, kann ich nicht daran denken, was ungerade Funktionen, die Sie verwendet haben, dass es zu brechen verursachen würde.

Auch eine Anwendung DX9 von 7 Umwandlung ist eigentlich nicht so schwer (Umstellung auf DX10 + ein Alptraum wäre). Sie sind immer noch relativ ähnlich ... die Hauptsache, die seit jener Zeit verändert hat, ist die Verkürzung der Dinge wie D3DTRANSFORMSTAGESTATE_ * oder D3DRENDERSTATE_ * zu D3DTSS_ * oder D3DRS _ *.

Edit: Die größte Veränderung, die ich davon seit DX7 passiert denken kann, ist, dass Grafikkartenhersteller Unterstützung für palettiert Texturen fallen gelassen haben, die einige alte Anwendungen auf modernen Maschinen brechen „könnte“. Das ist wirklich eine sehr einfache Lösung, obwohl ...

Edit2: Dinge von der Festplatte in eine Textur Dekomprimieren kann ein bisschen wie ein Schmerz sein. Ihr Hauptproblem ist die Tatsache, dass Sie eine Performance-Einbußen leiden am Ende, wenn Sie die Textur erstellen. Allerdings, wenn Sie eine Last von Texturen haben bereits erstellt und öffnen, dann können Sie auf die entsprechende Textur laden, wie und wann Sie wollen. Sie leiden nur ein Sperren / Entsperren Hit. Das kann durch das Laden einer Ressource ein paar Frames im Voraus gemildert werden. Wenn Sie dies tun, obwohl, wird es nicht erfordern Zweifel Multi-Threading und ruft D3D von mehreren Threads. Wenn Sie diesen Satz die Multi-Thread-Flagge auf dem Gerät.

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