Alte DirectX-Versionen: Welche ist sinnvoll benutzbar?



  • Naja, SetDIBitsToDevice kopiert ja nur, StretchBlt rechnet noch kräftig herum.
    Viel schneller als StretchBlt mit gleicher Quell- und Zielgröße wird SetDIBitsDevice auch nicht sein, da fällt bestenfalls einmal das Umkopieren des Grafikbuffers weg.



  • Ich würde in dieser Situation zu DirectDraw raten; am besten wohl mit DirectX 7 oder vielleicht auch 6. Das wäre schneller als GDI und dennoch so alt, dass es garantiert überall unterstützt wird^^



  • NES-Spieler schrieb:

    Naja, möglichst auf allen 32 Bit-Windows-Systemen, inklusive Windows 95.

    Das letzte DX da sunter Windows95 geht ist 8.0a. Ich weiß nicht genau wann sie DirectDraw eingestellt hatten, glaub das war ab DX8 somit wäre in DX7 die letzte DirectDraw Version drin. Ich hab allerdings schon ewig keine Rechner mit Windows9x mehr gesehen.



  • Athar schrieb:

    Naja, SetDIBitsToDevice kopiert ja nur, StretchBlt rechnet noch kräftig herum.
    Viel schneller als StretchBlt mit gleicher Quell- und Zielgröße wird SetDIBitsDevice auch nicht sein, da fällt bestenfalls einmal das Umkopieren des Grafikbuffers weg.

    Tja, dann ist die Funktion wohl nichts. Ich kann ja in meinem Spiel nicht nur die Originalgröße lassen. Hast Du schonmal ein Spiel mit einer Auflösung von 256 x 224 Pixeln auf einem 1024 x 768-Bildschirm gespielt? Also, bei einem NES-Emulator würde ich das zum Beispiel erstmal auf "mal 3" umstellen. Aber das bricht einem bei der GDI das Genick.

    /rant/ schrieb:

    Ich würde in dieser Situation zu DirectDraw raten; am besten wohl mit DirectX 7 oder vielleicht auch 6. Das wäre schneller als GDI und dennoch so alt, dass es garantiert überall unterstützt wird^^

    DirectDraw hätte ich sowieso gedacht. (Was auch sonst? Gibt's da noch was anderes?) Und das unterstützen: Nun ja, es geht nicht nur darum, daß es überall unterstützt wird, sondern darum, daß es mit hoher Wahrscheinlichkeit schon drauf ist und man im Zweifelsfall nur etwas Minimales nachinstallieren muß. Ich weiß, ich hab komische Vorstellungen, aber ich bin in der Beziehung nunmal ein Minimalist. Es kotzt mich an, wenn ich für ein 100 KB-Spiel erstmal was weiß ich nicht noch installieren muß. Weiterhin kotzt es mich manchmal an, wenn in Programmen irgendwelche unsinnigen Beschränkungen eingebaut werden: "Ja, ähm, wir haben das Programm jetzt unter anderem auf Unicode umgestellt, obwohl unsere ganzen Fenster und Dialoge sowieso nur in Standard-Englisch gehalten sind. Naja, wie auch immer, Ihr braucht für das Programm jetzt auf jeden Fall noch mindestens Windows XP SP 3, das .NET Framework 3.0 plus SDK, DirectX 10, 5 GHz und 1 GB Arbeitsspeicher. Wir wissen, die alte Version lief noch auf einem gerade frisch mit Windows 95 installierten Pentium II-Rechner mit 32 MB RAM. Aber naja, that's life."
    Ich würde ja DirectX 1 nehmen. 😃 Es sei denn natürlich, da sind bestimmte wichtige Features noch nicht vorhanden oder noch sehr unausgereift. Welches war denn die erste "wirkliche" Version? Hat da einer eine Ahnung?

    Xebov schrieb:

    Das letzte DX da sunter Windows95 geht ist 8.0a. Ich weiß nicht genau wann sie DirectDraw eingestellt hatten, glaub das war ab DX8 somit wäre in DX7 die letzte DirectDraw Version drin. Ich hab allerdings schon ewig keine Rechner mit Windows9x mehr gesehen.

    Was wird denn statt DirectDraw jetzt verwendet? Etwa Direct3D, wo die 2D-Grafik einfach oben auf eine Fläche gemalt wird?
    Ob es Computer mit diesen alten Betriebssystemen noch gibt, ist irrelevant. Das Spiel soll trotzdem auf allen Computern laufen.



  • NES-Spieler schrieb:

    Ich würde ja DirectX 1 nehmen. 😃 Es sei denn natürlich, da sind bestimmte wichtige Features noch nicht vorhanden oder noch sehr unausgereift. Welches war denn die erste "wirkliche" Version? Hat da einer eine Ahnung?

    Die ersten Versionen waren so naja. Wirklich gut wurde es glaub erst in die Richtung 3+.

    NES-Spieler schrieb:

    Was wird denn statt DirectDraw jetzt verwendet? Etwa Direct3D, wo die 2D-Grafik einfach oben auf eine Fläche gemalt wird?
    Ob es Computer mit diesen alten Betriebssystemen noch gibt, ist irrelevant. Das Spiel soll trotzdem auf allen Computern laufen.

    DirectDraw und Direct3D gabs ne Zeit lang nebeneinander, bei DX8 hat man sich dann entschieden DirectDraw einzustellen weil sich durch bessere technik 3D ohnehin weiter ausbreitete. DirectDraw ist aber bis heute ind en SDKs mit drin, halt in der letzten Version die jemals gemacht wurde.

    Irrelevant ist es nicht, wenn es kaum noch genutzt wird sollte man sich selbst fragen ob sich der Aufwand tatsächlich lohnt etwas dafür zurechtzuschneiden, imemrhin sind die technischen Grenzen unter Windows95 ja sehr eng.



  • Na wenn es denn wirklich so sein muss, dann verwende DirectDraw; etwas weiter verbreitetes wirst du mit Sicherheit nicht finden. Ausser du willst dein Programm ohne Betriebssystem direkt von einer Diskette starten und dann in Modus 13h usw... oh warte, heute haben die meisten PCs keine Diskettenlaufwerke mehr 😞


  • Mod

    gdi und directdraw sollten beide ueber die hardware beschleunigt werden, auch das stretchrect. wenn das nicht schnell genug ist, dann wuerde ich vermuten, dass die hardware es nicht schneller kann.



  • Ich glaub nicht, daß das daran liegt. Beim Game Boy-Emulator Visual Boy Advance kann man einstellen, mit welcher Technik die Grafik ausgegeben wird. Mit DirectDraw, Direct3D und OpenGL läuft das Spiel selbst bei vierfacher Vergörßerung noch genauso flüssig. Mit GDI geht er bereits bei doppelter Größe in die Knie.



  • Da du alle resourcenintensiven Zugriffe eh nur mit dem Hauptspeicher bewältigst und erst ganz zum Schluß per GDI ins Fenster kopierst,sollte es keine großen Unterschied machen ab der letzte Schritt per GDI, OGL oder DX passiert.

    Bei deinem Emu wird da sicherlich mehr mit GDI gemacht als einmal ins Fenster mit StretchBlt geblittet.

    Ich denke rapso hat da schon recht.

    Gruß Chris



  • justchris schrieb:

    Bei deinem Emu wird da sicherlich mehr mit GDI gemacht als einmal ins Fenster mit StretchBlt geblittet.

    Na und? Aber wenn es an der Hardware des PCs liegt, müßte doch der Emulator bei GDI und bei DirectX gleich schnell bzw. langsam sein.

    Nochmal die Zusammenstellung:

    Emulator mit GDI: Langsam
    Emulator mit DirectDraw, Direct3D oder OpenGL: Schnell
    Mein Programm mit GDI: Langsam

    Woher kommt jetzt die Schlußfolgerung, daß es an der Hardware liegt und daß mein Programm mit DirectDraw genauso langsam wäre wie mein Programm mit GDI?



  • NES-Spieler schrieb:

    Xebov schrieb:

    Das Hauptproblem für dich dürfte es erstmal sein ein SDK zu finden ind em alte DX Versionen drin sind.

    Wieso ist das ein Problem? Ich nehme dann eben das DirectX 1, 2, 3, 4, 5, wasauchimmer SDK.

    Hast du denn ein DX 1, 2, 3, 4, 5 SDK? Von Microsoft bekommt man das nichtmehr (MSDN Downloads gibt's nimmer). Compilieren kann man AFAIK Programme die alte DX Versionen verwenden auch mit neueren SDKs, aber die Beschreibung/Hilfe für ältere DX Versionen fehlt in den neueren SDKs leider.

    Und beim Endbenutzer sollte es ja so oder so funktionieren, da DirectX meines Wissens nach abwärtskompatibel ist.

    Dabei sehe ich auch kein Problem. D.h. es gibt einige Interfaces/Funktionen die gestrichen wurden, aber der einzige konkrete Fall den ich kenne betrifft irgendeine ganz alte Direct3D Version.



  • hustbaer schrieb:

    Hast du denn ein DX 1, 2, 3, 4, 5 SDK? Von Microsoft bekommt man das nichtmehr (MSDN Downloads gibt's nimmer). Compilieren kann man AFAIK Programme die alte DX Versionen verwenden auch mit neueren SDKs, aber die Beschreibung/Hilfe für ältere DX Versionen fehlt in den neueren SDKs leider.

    Das geht eigentlich nicht. Die SDKs enthalten nur die Libs und Header für DX9 10 und 11, und die letzte DirectDraw und DirectInput Versionen die es gab. Damit bekommt man also nix was auf DX <9 laufen soll Compiliert.



  • hustbaer schrieb:

    Hast du denn ein DX 1, 2, 3, 4, 5 SDK? Von Microsoft bekommt man das nichtmehr (MSDN Downloads gibt's nimmer).

    Also, ich hab jetzt bereits zwei Seiten gefunden, die das zum Download anbieten.

    Im Moment schwanke ich zwischen Version 2 und 3. Gibt es irgendwas in Version 3, das 2 noch nicht hat und das unverzichtbar ist?



  • Xebov schrieb:

    hustbaer schrieb:

    Hast du denn ein DX 1, 2, 3, 4, 5 SDK? Von Microsoft bekommt man das nichtmehr (MSDN Downloads gibt's nimmer). Compilieren kann man AFAIK Programme die alte DX Versionen verwenden auch mit neueren SDKs, aber die Beschreibung/Hilfe für ältere DX Versionen fehlt in den neueren SDKs leider.

    Das geht eigentlich nicht. Die SDKs enthalten nur die Libs und Header für DX9 10 und 11, und die letzte DirectDraw und DirectInput Versionen die es gab. Damit bekommt man also nix was auf DX <9 laufen soll Compiliert.

    Wenn du das sagst glaub ich dir das einfach mal 🙂
    Ich denke ich hab das letzte DirectDraw 7 Programm mit dem "2003 Summer Update" SDK compiliert. Das ist aber natürlich auch schon recht alt.

    BTW: Geht DirectDraw4 auch nimmer? Ich könnte mir vorstellen dass DirectDraw4 u.U. auch mit neueren SDKs noch geht, da DirectDraw4 soweit ich weiss noch das "aktuelle" DirectDraw für Windows CE ist...

    @NES-Spieler:
    Wenn du ein altes SDK gefunden hast ist ja alles gut 🙂
    Ich finde es auch ziemlich doof dass man die von MS nichtmehr direkt beziehen kann -- wenn man sie damals runtergeladen und aufgehoben hat (waren ja frei für jeden erhältlich), darf man sie heute ja auch noch nutzen.

    Was Version 2/3 angeht: ich wüsste nichts, was in DirectDraw "1" fehlen würde, was wirklich unverzichtbar ist. Einige Dinge sind halt anders, und einige fehlen.

    Persönlich würde ich aber vermutlich eher auf OpenGL, oder auf Direct3D8 setzen (für 2D Alpha-Blending - sieht halt hübscher aus als ohne). Beide funktionieren mit Windows 95. Natürlich muss man beide ggf. nachinstallieren, da weder OpenGL noch Direct3D8 bei Windows 95 vorinstalliert sind.



  • hustbaer schrieb:

    Wenn du das sagst glaub ich dir das einfach mal 🙂
    Ich denke ich hab das letzte DirectDraw 7 Programm mit dem "2003 Summer Update" SDK compiliert. Das ist aber natürlich auch schon recht alt.

    BTW: Geht DirectDraw4 auch nimmer? Ich könnte mir vorstellen dass DirectDraw4 u.U. auch mit neueren SDKs noch geht, da DirectDraw4 soweit ich weiss noch das "aktuelle" DirectDraw für Windows CE ist...

    Ja das geht noch, ich hab eben mal genauer Nachgesehen. Der Header von DirectDraw enthält auch alle Vorhergehenden Versionen. Ich hab das SDK von August 09, und da ist 1,2,4,7 drin. Bei DirectDraw hat man ja scheinbar nie eigene Dateien für die Versionen gebastelt wie bei Direct3D. Bei DirectInput müsste man auch verschiedene Versionen rausbekommen.



  • hustbaer schrieb:

    Was Version 2/3 angeht: ich wüsste nichts, was in DirectDraw "1" fehlen würde, was wirklich unverzichtbar ist. Einige Dinge sind halt anders, und einige fehlen.

    Bei der Frage "DirectX 1" vs. "DirectX 2" ist es so: Sämtliche Windows-Versionen wurden entweder mit gar keinem oder mit mindestens DirectX 2 ausgeliefert. Das heißt, Version 1 statt Version 2 zu nehmen, bringt niemandem Vorteile. Betriebssysteme, die keins drauf haben, müssen sowieso eines nachinstallieren, und Betriebssysteme, die ein DirectX vorinstalliert haben, haben mindestens Version 2. Das heißt, es gibt keinen Grund, 1 zu benutzen.

    hustbaer schrieb:

    Persönlich würde ich aber vermutlich eher auf OpenGL, oder auf Direct3D8 setzen (für 2D Alpha-Blending - sieht halt hübscher aus als ohne).

    Alpha Blending? Was ist das? Kann man das essen? Hast Du mal meinen Benutzernamen gesehen? Bei mir haben Videospiele weniger als 64 Farben, von denen nichtmal alle gleichzeitig dargestellt werden können. 😃



  • NES-Spieler schrieb:

    Alpha Blending? Was ist das? Kann man das essen? Hast Du mal meinen Benutzernamen gesehen? Bei mir haben Videospiele weniger als 64 Farben, von denen nichtmal alle gleichzeitig dargestellt werden können. 😃

    Ok ich muß sagen jetzt evrstehe ich wieso du die neueren Versionen zu gunsten einer Kompatibilität die keiner braucht ignorierst.

    Beim Alpha Blending nutzt man den Alphakanal des Pixels/Textur um Objekte zu überblenden. Der Finale Pixel der gezeichnet wird ist dabei eine Mischung aus dem zu zeichnenden Pixel und dem Bereits im Buffer vorhandenen in Abhängigkeit des Alpawertes des zu zeichnenden Pixels (gibt da verschiedene Berechnungsmöglichkeiten das ist eine davon).



  • Ich weiß, was das ist. Der Post sollte eine gewisse Ironie beinhalten, darüberhinaus aber auch ganz direkt verdeutlichen, daß ich Alpha Blending nicht brauche.



  • Ich bin's nochmal. Eine Frage: Weiß einer, wo ich die Originaldatei des DirectX 2 SDK bekomme? Ich habe zwei Links gefunden, wo man das runterladen kann:

    www.zoneprog.com/directx/dxsdk.php
    forum.gamedeception.net/archive/index.php?t-16912.html

    Eine Version davon ist nur die Beta und in der anderen wurde der Großteil der Samplecodes entfernt.
    Ich hätte aber gern die Originaldatei, die man damals auf www.microsoft.com/msdownload/directx2.htm runterladen konnte. Ich versteh nicht, wieso Leute, wenn sie alte Sachen online stellen, immer an den Inhalten rumspielen müssen. 🙄

    Also, weiß jemand, wo ich die Original Zip herbekomme?


Anmelden zum Antworten