JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=967803bc630f352f13025db07dc4ee3aMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

ID3DXSprite Frage
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  

Verwendet ihr ID3DSprite Klasse?
Ja, weil sehr schnell, bewährt und funktional
0%
 0%  [ 0 ]
Ja, weil selbst machen zu schwer/zeitaufwändig
7%
 7%  [ 1 ]
Nein, weil zu langsam/zu wenig Funktionen
46%
 46%  [ 6 ]
Nein, weil ich es einfach selber umsetzen wollte
46%
 46%  [ 6 ]
Stimmen insgesamt : 13

Autor Nachricht
Tiberius
Mini JLI'ler



Anmeldedatum: 16.05.2006
Beiträge: 6

Medaillen: Keine

BeitragVerfasst am: 16.05.2006, 23:45    Titel: ID3DXSprite Frage Antworten mit Zitat

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 Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
manu
Super JLI'ler


Alter: 35
Anmeldedatum: 09.03.2006
Beiträge: 327
Wohnort: allgäu (DE)
Medaillen: Keine

BeitragVerfasst am: 17.05.2006, 09:28    Titel: Antworten mit Zitat

Solange ich jetzt keinen Denkfehler drinne hab, hast du einen drin Smile

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ß Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 17.05.2006, 11:00    Titel: Antworten mit Zitat

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. Cool
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 17.05.2006, 11:23    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 17.05.2006, 11:52    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 17.05.2006, 14:29    Titel: Antworten mit Zitat

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 Wink).
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Tiberius
Mini JLI'ler



Anmeldedatum: 16.05.2006
Beiträge: 6

Medaillen: Keine

BeitragVerfasst am: 17.05.2006, 14:52    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 18.05.2006, 18:19    Titel: Re: ID3DXSprite Frage Antworten mit Zitat

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 Very Happy

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 18.05.2006, 19:31    Titel: Re: ID3DXSprite Frage Antworten mit Zitat

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 Very Happy

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 18.05.2006, 20:44    Titel: Re: ID3DXSprite Frage Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 18.05.2006, 20:53    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 18.05.2006, 21:03    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 19.05.2006, 15:17    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 19.05.2006, 15:55    Titel: Antworten mit Zitat

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... Confused

Über irgendwelche Lizenz-Probleme finde ich auch keine vernünftige Quelle, hab' eben mal die Eula des SDKs durch geschaut... auch nix.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 19.05.2006, 16:00    Titel: Antworten mit Zitat

Ich hab das SDK aber keine Extension Ersatz libs.

Das mit der Lizenz Sache wurde AFAIK in dem einen thread als humbug abgetan Smile
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
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

Impressum