DX9 Sprite vs DirectDraw



  • Hi,
    ich wollte ein paar Bilder in mein Fenster zeichen und habs mit DirectDraw und
    D3DXSPRITE versucht.
    Als erstes hab ich DD ausprobiert - und es ging nicht. Selbst nach über 6 Stunden
    funktionierte es nicht.
    Also wechsel zu dem Sprite. Es wird mit hilfe von D3D initialisiert und gezeichnet.
    Der Code ist wesentlich kürzer und total unkompliziert. Die verwendeten Bilder
    werden dabei als Textur geladen und gleich mit ColorKey. In etwa einer Stunde
    wars vollbracht. Jetzt frag ich mich aber wozu man DD noch braucht?
    Hat es irgentwas, was man mit den Sprites nicht realisieren kann?



  • wozu man DD noch braucht? man braucht es eigentlich gar net mehr 😃
    aber denk doch mal an die alten zeiten zurück, wo die spiele noch diesen schönen retro-look hatten. damals als DD auch noch immer weiterentwickelt wurde, wurde es halt vorherrschend für games verwendet.
    heutzutage hat man mit D3D natürlich viel einfachere möglichkeiten, DD-artige Grafik anzeigen zu lassen. wer DD noch benutzt, der solls tun, aber einen grafischen meilenstein wird er damit nicht setzen können 😉



  • Na ganz so schlecht will ich DirectDraw dann doch nicht wegkommen lassen.
    Es gibt schon ein paar Möglichkeiten, die mit dem Übergang zu DirectGraphics wegfielen. DirectDraw war einfach näher an der Hardware.
    Mit all seinen Vor, und Nachteilen.

    Z.B. gibt es ohne DD keinen richtigen 256 Farbmodus mehr, nur noch für Paletten. Das Konzept der Palettenanimation geht daher nicht mehr.
    Unter DD konnte man auch die PrimarySurface locken. Also direkt auf die Pixel des gerade sichtbaren Screens zugreifen. Unter DG muss man das dagegen erst auf der Backsurface machen und die dann blitten/flippen.
    Es gab doch mal dieses Programm, wo auf dem Desktop die Schafe rumgelaufen sind und der Desktop trozdem funtktionstüchtig blieb.So etwas dürfte jetzt ohne DD unmöglich, oder zumindest sehr umständlich sein (Overlays).
    Oder wenn man z.B. Copperbars zeichnen möchte: Unter DDraw konnte man die gerade gezeichnete Scanlinie des Monitors auslesen.(Vielleicht gibt es die jetzt noch weiterhin irgendwo versteckt, aber du hast ja eh keinen Zugriff auf die PrimarySurface.) Ich weiß auch nicht, ob TFT das dann simulieren würden.

    *EDIT*: Ich hab nochmal nachgeschaut: Scanlines kann man auch weiterhin auslesen.



  • SeppSchrot schrieb:

    Z.B. gibt es ohne DD keinen richtigen 256 Farbmodus mehr

    Wobei den ja auch niemand mehr braucht, und wenn du doch diesen 256 Farben Retro Look brauchst, kannst du das mit Hi- bzw. TrueColor simulieren.

    SeppSchrot schrieb:

    Das Konzept der Palettenanimation geht daher nicht mehr.

    Was ja eigentlich auch nur eine Notlösung war, und teilweise recht unschön sein konnte.
    Imho ein weiterer Grund, warum früher für 2D kein Direct3D verwendet wurde, ist, dass Direct3D vor Version 8 ein ziemlich hässliches Gesicht hatte. Ich hab zB früher mal was mit D3D probiert, war glaub ich Version 6, hab da aber nie wirklich durchgeblickt. Hab bis heute nicht begriffen, wie das mit dem Unterschied zwischen Retained und Immediate Mode (oder wie das hiess) war. Hab das ganze dann schnell frustriert beiseite gelegt. Da war DD einfach Einsteiger freundlicher.



  • groovemaster2002 schrieb:

    Hab bis heute nicht begriffen, wie das mit dem Unterschied zwischen Retained und Immediate Mode (oder wie das hiess) war.

    Immediate = wie heute, direkt

    Retained = heutzutage quasi in D3DX versteckt, d.h. man konnte "mal eben schnell" Zylinder, Kugeln und andere Primitive rendern, quasi ein GLUT / GLAUX für DX



  • Wenn die Fähigkeiten von DDraw ausreichen, gibts eigentlich keinen Grund, es nicht zu benutzen.

    Bye, TGGC \-/



  • doch, es gibt einen grund...

    speed!?

    alphablending!?

    rotieren von bitmaps!?



  • dot schrieb:

    doch, es gibt einen grund...

    speed!?

    alphablending!?

    rotieren von bitmaps!?

    Dann reichen Dir die Fähigkeiten von DirectDraw ja anscheinend nicht... 🙄 🤡



  • speed?

    Reicht für 2D anwendungen in einer max auflösung von 1600x1200 bei 16bit total aus!

    Alphablending?
    Türlich, selber implementieren, hat man bei StarCraft auch und so ein Aufwand ist das ja nun nicht.

    Rotation?
    Selber implementieren.



  • hast ja recht, aber ich seh keinen grund es noch zu verwenden...



  • nix da schrieb:

    speed?

    Reicht für 2D anwendungen in einer max auflösung von 1600x1200 bei 16bit total aus!

    Alphablending?
    Türlich, selber implementieren, hat man bei StarCraft auch und so ein Aufwand ist das ja nun nicht.

    Rotation?
    Selber implementieren.

    1600x1200 mit 16 bit... hmm, naja

    alphablending und rotation in software bei 1600x1200 = speed?

    ewtrem schwer zu implementieren wärs nicht, aber warum sw, wenns auch in hw geht?



  • dot schrieb:

    hast ja recht, aber ich seh keinen grund es noch zu verwenden...

    Der Einfachheit halber? Zum Einstieg reichts doch total, man muss sich nicht mit Matrizen rumschlagen um ne anständige Ortho hinzukriegen, man lernt das 2D System sehr gut sowie, wie grafiken angezeigt werden.

    Nebenbei kann man mit DD einen ganz guten Softwarerenderer bauen 😉 Siehe Doom LT



  • zum einstieg, da stimm ich zu.

    aber matrizen brauchst du auch keine wenn du transformierte vertices verwendest...



  • dot schrieb:

    alphablending und rotation in software bei 1600x1200 = speed?

    ewtrem schwer zu implementieren wärs nicht, aber warum sw, wenns auch in hw geht?

    Also Alphablending macht nicht sehr viel aus, nur paar multiplikationen mehr, bei rotation sieth das schon anders aus, muss ich zugeben.

    Irgendwo gabs mal ein DX Sample da wurd die GraKa angesprochen mit DirectDraw und da hatte man dann kein software mehr sondern Hardware. (War auch mal in diesen PC Action gamedevelopertutorial-reihe)



  • ja, aber 2d rotation, das unterstützen afaik nicht alle grakas...



  • dot schrieb:

    ja, aber 2d rotation, das unterstützen afaik nicht alle grakas...

    Naja fragen wir mal so: Wann in 2D Games braucht man Rotation? Oft wird es doch so gemacht, man macht einfach ein Paar sprites mehr (vorallem in Iso-Games).

    Vorallem da das oft auch noch besser aussieht. Kurz: braucht man wenn schon SEHR selten.



  • dot schrieb:

    doch, es gibt einen grund...

    speed!?

    alphablending!?

    rotieren von bitmaps!?

    Wer Lesen kann ist klar im Vorteil.

    Bye, TGGC (Just think about it)


Anmelden zum Antworten