 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Verwendet ihr ID3DSprite Klasse? |
Ja, weil sehr schnell, bewährt und funktional |
|
0% |
[ 0 ] |
Ja, weil selbst machen zu schwer/zeitaufwändig |
|
7% |
[ 1 ] |
Nein, weil zu langsam/zu wenig Funktionen |
|
46% |
[ 6 ] |
Nein, weil ich es einfach selber umsetzen wollte |
|
46% |
[ 6 ] |
|
Stimmen insgesamt : 13 |
|
Autor |
Nachricht |
Tiberius Mini JLI'ler
Anmeldedatum: 16.05.2006 Beiträge: 6
Medaillen: Keine
|
Verfasst am: 16.05.2006, 23:45 Titel: ID3DXSprite Frage |
|
|
hallo,
ich hab Christian Rousselle Buch gelesen und versuche nun gerade mein eigenes Projekt zu realisieren. Ich hätte da mal eine kurze Frage zur D3DX Sprite-Hilfsklasse. Man ruft ja zwischen den begin und End calls die Draws für jede Textur auf... diese werden dann schön gebatchet, damit man nciht viele einzelne Quads, sondern ein großer gerendet werden müssen... so habe ich das zumindest verstanden, korrigiert mich, wenns falsch wird.
Nun würde ich von meiner Überlegung her aber sagen, dass die Sprites nicht jedes Frame neu gedrawt werden müssen, sondern nur wenn sie sich ändern... ist es also irgendwie möglich, das zusammengebachte Ergebnis aus dem letzten frame irgendwie zu bekommen und dann einfach das so lange zu rendern bis sich irgendwas ändert und daher wieder alle Sprites neugedrawt werden müssen?
Das sollte doch eignletich einiges an Performance sparen, oder habe ich irgendwo einen Denkfehler?
Verwendet ihr eigentlich diese D3DX Klasse oder habt ihr das selber geschrieben? Ich wollte sie jetzt erstmal verwenden, weil ich gehört habe, dass sie sehr schnell sei und auch einiges andere (Text, Gui...) darauf aufbaut und ich eingentlich keine Lust habe das alles neu zu schreiben.
Danke schonmal im vorraus für die Hilfe  |
|
Nach oben |
|
 |
manu Super JLI'ler

Alter: 35 Anmeldedatum: 09.03.2006 Beiträge: 327 Wohnort: allgäu (DE) Medaillen: Keine
|
Verfasst am: 17.05.2006, 09:28 Titel: |
|
|
Solange ich jetzt keinen Denkfehler drinne hab, hast du einen drin
Du willst die Szene also vom letzten Frame holen(???) anstatt sie neu zu zeichnen? Erstens wüsste ich nicht, wie das funktionieren sollte und zweitens käme das ja aufs gleiche raus.
Ich mach mal ein Beispiel:
Du hast nen Kreis, der sich beim Druck auf eine Taste bewegt. Bleibt jetzt der Tastendruck aus, ändert der Kreis auch nicht seine Position.
Aber wenn du den jetzt nicht mehr zeichnest (weil sich ja nichts geändert hatt) kannst du ihn aufm Bildschirm ja nicht mehr sehen. Und wenn du jetzt was ausm letzten Frame holst(???) musst du es ja genauso zeichnen, damit du es noch siehst ==> kommt aufs gleiche drauf raus.
Code: |
Spielschleife
-lösche den Bildschirm
- berechne aktuelle Position und Zeichne den Kreis //hier _muss_ der Kreis gezeichnet werden damit du ihn siehst
-kopiere die Szene in den Frontbuffer
Ende der Spielschleife
|
Aber was meinst du überhaupt mit "aus dem letzten Frame bekommen"?
Ich kann mir das irgendwie nicht so ganz vorstellen. Da müsstest du ja zur Laufzeit nen Screenshot machen und diesen wieder laden und zeichnen. hm? Außer du löschst am ende eines Druchlaufs der Spielschleife nicht den Frontbuffer. Macht aber irgendwie keinen Sinn und bringt sicher auch keine Performance Verbesserung...
gruß  |
|
Nach oben |
|
 |
GreveN JLI Master

Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 17.05.2006, 11:00 Titel: |
|
|
Er meint, dass er die aktuelle Szene rendert, die Position/Animationsstatus/usw. aller Objekte sichert, im nächsten Frame schaut, ob sich was geändert hat und nur die Objekte neu zeichnet, die sich zwischenzeitlich verändert haben. Funktioniert natürlich nur, wenn man den Framebuffer nicht jedesmal irgendwie löscht...
Logo bringt das Performance, allerdings spielen ein Paar Polys mehr oder weniger bei heutigen Grakas kaum eine Rolle, außerdem kostet es mehr Performance, die Geometrie dauernd an die Grafikkarte zusenden, was zumindest darauf hinausliefe, wenn du die VertexBuffer und dergleichen in jedem Frame neu zusammen stellst.
Und zu deiner Frage: Nein, ich verwende kein D3DXSprite-Dingsbums... Um genau zusein: Ich verwende nicht mal D3D.  |
|
Nach oben |
|
 |
KI JLI Master

Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 17.05.2006, 11:23 Titel: |
|
|
Wie GreveN schon sagte bringt das keine messbaren Performance-Vorteile.
Technisch ginge es so, dass du kein "Clear" aufruftst und die entsprechenden Stellen nicht überzeichnest. Also auch mit keinem Hintergrundbild, denn das überzeichnet ja den ganzen Bildschirm. |
|
Nach oben |
|
 |
Christian Rousselle Site Admin

Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 17.05.2006, 11:52 Titel: |
|
|
Wenn ich es richtig verstanden habe, ging es eher darum sich das nochmalige Batchen, also das Aufbauen des/mehrerer Vertexbuffer druch DirectX zu sparen und den aufgebauten VB wieder zu nutzen. Ich glaube nicht, dass dies möglich ist und kann mir auch nicht vorstellen, dass DX das intern macht.
Um noch einem Missverständnis vorzubeugen: Das Batchen macht nur dann Sinn und bringt Performance, wenn du die gleichen Sprites mehrfach (pro Frame) zeichnest. Solltest du 100 verschiedene Sprites mit 100 verschiedenen Texturen haben, kann DX das auch nicht optimieren, da dazu 100 Drawcalls notwenig sein werden. |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 17.05.2006, 14:29 Titel: |
|
|
Wenn du nur die Sprites neu zeichnen wilslt, die sich nicht bewegt haben, geht das zwar einerseites, andererseits, müsstest du sie an ihrer alten Position wieder löschen...
Und da in vielne Spieln noch scrolling dazu kommt, ist das heutzutage Blödsinn sowas zu machen, lohnt einfach net. Früher wo man vielelihct sowas wie Sokoban hatte, wo man einfach nur den Spieler mit dem Hintergrundbild übermalen musste und den Spieler an einer anderen Stelle neu zeichnen musste, da machte sowas Sinn, ich hab das mal bei einem Psion 3c gemacht (falls das alte Ding noch jeamnd kennt ). _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Tiberius Mini JLI'ler
Anmeldedatum: 16.05.2006 Beiträge: 6
Medaillen: Keine
|
Verfasst am: 17.05.2006, 14:52 Titel: |
|
|
Vielen Dank erstmal für die vielen schnellen Antworten.
Ich hatte das batchen so verstanden, dass alle spirteTexturen auf eine große (Texture oder Surface) kopiert werden und diese dann, wenn alle einzelsprites drauf gezeichnet wurden dargestellt/gerendet wird. bis zu diesem zeitpunkt ist also noch nix auf dem bildschirm zu sehen...
Weil sich die Sprites ja für gewöhnlich nicht so oft ändern, könnte man also jetzt solange diese große SammelTextur/Surface anzeigen/rendern bis es halt nötig ist eine neue zu erstellen... man müsste also nur ein Texturiertes Quad zeigen, selbst wenn darauf 1000nde von Sprites zu sehen sind...
zumindest wäre das mein ansatz wie ich sowas implementieren würde und ich dachte, das wäre auch das prinzip vom batching... warum funktioniert das nur mit sprites die die gleiche Textur verwenden?? |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 18.05.2006, 18:19 Titel: Re: ID3DXSprite Frage |
|
|
Tiberius hat Folgendes geschrieben: | Ich wollte sie jetzt erstmal verwenden, weil ich gehört habe, dass sie sehr schnell sei und auch einiges andere (Text, Gui...) darauf aufbaut und ich eingentlich keine Lust habe das alles neu zu schreiben. |
Also, generell gilt, dass D3DX sehr langsam und ungeeignet für Spiele (zumindest für die, die etwas professioneller sein sollen) ist, bes. die D3DX Sprite Klasse. Nein, ich will jetzt net wieder die D3DX Ja/Nein Diskussion auffachen, sondern nur Fakten klarstellen. Für anfängliche Übungsprojekte jedoch ist es eigentlich ganz ok, das alles zu verwenden, da das Selbermachen viele Anfänger überfordert und die dazu verführt, alles hinzuschmeißen. Mit der Erfahrung solltest du allerdings mal die Hintergründe hinter D3DX erfahren, sodass du da auch mit der Zeit selber für bessere Ansätze suchen solltest, bis du deine kleine "GrafikEngine" hast und auf D3DX voll und ganz verzichten kannst
Gruß DXer |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 18.05.2006, 19:31 Titel: Re: ID3DXSprite Frage |
|
|
DirectXer hat Folgendes geschrieben: | Also, generell gilt, dass D3DX sehr langsam und ungeeignet für Spiele (zumindest für die, die etwas professioneller sein sollen) ist, bes. die D3DX Sprite Klasse. Nein, ich will jetzt net wieder die D3DX Ja/Nein Diskussion auffachen, sondern nur Fakten klarstellen. Für anfängliche Übungsprojekte jedoch ist es eigentlich ganz ok, das alles zu verwenden, da das Selbermachen viele Anfänger überfordert und die dazu verführt, alles hinzuschmeißen. Mit der Erfahrung solltest du allerdings mal die Hintergründe hinter D3DX erfahren, sodass du da auch mit der Zeit selber für bessere Ansätze suchen solltest, bis du deine kleine "GrafikEngine" hast und auf D3DX voll und ganz verzichten kannst
Gruß DXer |
Bei dem kann ich ihn zustimmen, auf den Rest gehe ich lieber nicht ein da ja eine anständige Diskussion schon vorher ausgeschlossen wurde, danke.
Der Vorteil davon wenn du eine eigene Spriteklasse hast ist das du dieses Wissen schön auf viele andere Bereiche ausweiten kannst da du beim erstellen dieser eine ganze Menge wissen sammelst. Unter anderem über die Funktionsweise von DirectX was dir später eine ganze menge probleme ersparen kann. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
Christian Rousselle Site Admin

Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 18.05.2006, 20:44 Titel: Re: ID3DXSprite Frage |
|
|
DirectXer hat Folgendes geschrieben: |
Also, generell gilt, dass D3DX sehr langsam und ungeeignet für Spiele (zumindest für die, die etwas professioneller sein sollen) ist, bes. die D3DX Sprite Klasse. Nein, ich will jetzt net wieder die D3DX Ja/Nein Diskussion auffachen, sondern nur Fakten klarstellen.
|
Sorry, aber das halte ich für Unsinn. Woher bitteschön hast du da Anhaltspunkte für? Ich frage mich wirklich, wer sowas in die Welt setzt...
C. |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 18.05.2006, 20:53 Titel: |
|
|
Wenn dieses Thema einmal sachlich behandelt werden würde, könnte man damit sicher einen oft referenzierten FAQ Thread erstellen. Das JLI könnte grossen Ruhm erlangen. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
Christian Rousselle Site Admin

Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 18.05.2006, 21:03 Titel: |
|
|
Was stellst du dir da vor? Ich habe bisher immer nur diffuse Behauptungen in der Richtung gehört, dass D3DX langsam und nutzlos ist. Irgendein Argument, geschweige denn Vergleiche/Tabellen/was auch immer habe ich noch nie gesehen. |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 19.05.2006, 15:17 Titel: |
|
|
Doch in diversen Threads wurde das bereits einige male besprochen sogar mit Beweislinks aus offiziellen Quellen, leider wurde dies nur kaum beachtet und die threads wurden des öfteren wegen der Flamerei geschlossen.
Daher meine ich ja das eine sachlich geführte Diskussion die sogar dazu führt das endlich Klarheit verschafft wird sehr schön wäre.
Ich kann ja diese Threads mal suchen.
Edit:
Mögliche Klarstellung (leider doch nur wenige Quellen):
http://www.jliforum.de/board/viewtopic.php?t=4394
Gerüchte mit Lizenzen:
http://www.jliforum.de/board/viewtopic.php?t=3448&start=0
Hast recht, mal ein wenig mehr anständige Quellen wären toll, vermutlich werden aber solche Quellen nur apkzeptiert wenn sie von offiziell anerkannten Pros kommen, aber ab wann gilt man als pro und wie wird man offiziell anerkannt :/ _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
GreveN JLI Master

Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 19.05.2006, 15:55 Titel: |
|
|
Was spricht eigentlich dagegen mal eben fix ein paar Benchmarks zumachen? Würde sich denn hier mal jemand dazu bereit erklären, der eine aktuelle Version des SDKs hat? Ich hab' grade nicht die Muse das knapp 400MB große Teil zu laden, bzw. bin aufgrund meines Volumentarifs danach arm...
Über irgendwelche Lizenz-Probleme finde ich auch keine vernünftige Quelle, hab' eben mal die Eula des SDKs durch geschaut... auch nix. |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 19.05.2006, 16:00 Titel: |
|
|
Ich hab das SDK aber keine Extension Ersatz libs.
Das mit der Lizenz Sache wurde AFAIK in dem einen thread als humbug abgetan  _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|