D3D für 2D-Spiele
-
Hallo!
Wie kann man Direct3D (oder wie es jetzt heißt: DirectGraphics) sinnvoll für 2D-Grafiken einsetzen?
Ich meine damit aber nicht bloß irgendwelche Menüs die man einblendet, sondern z.B. für reine 2D-Spiele.
(warum ich nicht gleich DirectDraw nehme: ich will AlphaBlending)Ich rede hier z.B. von Strategiespielen, wo sich die Landschaft auch einzelnen Feldern zusammensetzt. In DirectDraw habe ich die Landschaft beim Initialisieren 1 Mal in eine Offscreen-Surface gezeichnet und dann immer den gerade sichtbaren Teil auf den BackBuffer kopiert. Dann noch schnell ein paar Figuren dazuzeichnen und Flip() aufrufen.
In D3D gibt es aber soweit ich weiß für 2D-Grafiken nur die Möglichkeit, sie in Form von bereits transformierten Vertices + Textur zu rendern.
Das heißt aber auch, dass ich die Landschaft nicht schon beim Initialisieren zusammensetzen kann, sondern dass ich wirklich bei jedem Gameloop-Durchlauf jedes Feld einzeln rendern muss. Da man ja auch scrollen kann ist es noch schlimmer: man muss sogar die Vertices bei jedem Durchlauf neu berechnen.
Da aber bekanntlich das Zeichnen (bzw. Rendern) vieler kleiner Grafiken wesentlich langsamer geht als wenige große geht das Ganze viel zu langsam.Kennt jemand bessere Möglichkeiten?
Danke!
mfg
-
Du kannst doch einfach die Polygone direkt vor die Kamera pappen.
Es gibt das ID3DXSprite-Interface, dass dir das erleichtert. Funktioniert wunderbar.
Was heißt hier "nicht gleich" DDraw?? DDraw ist tot.
T.O.TWer das jetzt noch lernt, dem ist nicht mehr zu helfen.
-
Optimizer schrieb:
Was heißt hier "nicht gleich" DDraw?? DDraw ist tot.
T.O.TWir kennen doch schon aus der Bibel, dass Tote wieder auferstehen können
-
@KPC:
Immer diese Christennee quatsch! DD wird nicht mehr wiederkehren weil man mit D3D einfach bessere erfolge erzielen kann auch im 2D bereich!
Drum wäre MS nicht gerade intellegent wenn sie eine veraltete Schnittstelle wieder aufmöbeln wenn man es mit einer besseren abgeschafft wurde.
Is doch Logisch?
-
nimm halt sdl
-
dönertier schrieb:
nimm halt sdl
ist DirectDraw
-
Patrick schrieb:
dönertier schrieb:
nimm halt sdl
ist DirectDraw
seit wann geht DirectDraw unter linux?
-
Unter Linux ist es nicht DirectDraw.
-
Eben, Patrick hatte nicht recht.
API Zugriffe machen durchscnittlich nur 3% eines Programms aus. Von daher kann man genausogut DDraw, SDL oder sonstwas benutzen, solange es alle Features hat, die man benötigt. Daher war Christoph Redl's Überlegung so schon korrekt. Das DDraw "tot" oder "abgeschafft" Gelaber könnt ihr euch eigentlich sparen, bleibt lieber bei den sinnvollen Argumenten.
Zu D3D: Es müssen nicht vortransformierte Vertizen benutzt werden, es geht ebenso mit den "anderen". Dann musst du sie entweder alle auf die selbe Tiefe setzten oder eine orthogonale Projektion benutzten. Hat AFAIK den Vorteil das es so automatisch clippt und das für Scrolling/Bewegungen Translationsmatrizen benutzt werden können.
HTH
Bye, TGGC (Der Held ist zurück)
-
TGGC schrieb:
Gelaber könnt ihr euch eigentlich sparen, bleibt lieber bei den sinnvollen Argumenten.
Welch Ironie, das diese Worte mit Deinen Händen geschrieben wurden?
-
Hehe.
Ich möchte nochmal auf das Sprite-Interface verweisen, für den man übrigens auch keinen Vertexbuffer braucht.
-
Patrick schrieb:
Welch Ironie, das diese Worte mit Deinen Händen geschrieben wurden?
Ach komm schon, jetzt stänker hier nicht ständig rum, man kann ja von TGGC halten was man will aber das was Du machst ist keinen Deut besser als das was Du ihm vorwirfst.
-
@Patrick: Gelaber++. Geh OT oder ZFX.
@Optimizer: Aber intern legt das ja trotzdem welche an. Ohne Vertizen kann man ja immer so im 3D-Modus schlecht zeichnen.
Bye, TGGC (Der Held ist zurück)
-
Ja klar, was ich sagen will, ist dass man in D3D wie in DDraw "zeichnen" kann.
Also gibt es IMO keinen Grund, jetzt noch DDraw zu lernen. Es erschreckt mich immer wieder, wieviele Fragen zu DDraw hier noch auftauchen.Deshalb mal meine übertriebene Aussage, DirectDraw ist tot. Hoffentlich hat jetzt jeder die Message.
-
[quote="Optimizer"]Also gibt es IMO keinen Grund, jetzt noch DDraw zu lernen. Es erschreckt mich immer wieder, wieviele Fragen zu DDraw hier noch auftauchen.quote]
man muss es ja nicht unbedingt grade lernen um zu fragen
und wer aus welchzen gründen auch immer nicht umsteigen will fragt halt nach dd.
mfg
Black Sting
-
DDraw ist als Einstieg sicherlich sinnvoller als D3D, wobei ich dann ehrlich gesagt auch lieber gleich ne Wrapper Bibliothek wie z.B. Allegro benutzen würde.
-
nep schrieb:
DDraw ist als Einstieg sicherlich sinnvoller als D3D [...]
Vollkommener Unfug. Wie oft denn noch? DDraw wird nicht mehr weiterentwickelt. DDraw kann (fast) nichts. Und es ist völlig anders als D3D.
-
Aber was spricht gegen DDraw, wenn man nur Features brauch, die DDraw kann.
Bye, TGGC (Der Held ist zurück)
-
Zum Einstieg braucht man natürlich nicht mehr, als mal ein Bild anzuzeigen.
Irgendwann möchte man vielleicht doch mal Alphablending oder ein Bild drehen?
Außerdem jetzt DDraw zu lernen (ich habe nicht gesagt, dass man es aus seinem Gedächtnis löschen soll, wenn man es kann), ist nicht gerade eine Investition in die Zukunft.
-
Es soll auch Leute geben die zum Einstieg lieber 2D Spiele programmieren, was IMHO auch viel besser ist. Bei D3D wird man doch anfangs nur mit dem ganzen 3D Zeugs konfrontiert und den ganzen Funktionen, da ist DDraw um einiges einfacher. Aber dann würde ich persönlich halt auch gleich sowas wie Allegro oder SDL benutzen, aber ist ja auch egal.