Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
LeeDiGer Super JLI'ler
Anmeldedatum: 31.08.2003 Beiträge: 366 Wohnort: Duisburg Medaillen: Keine
|
Verfasst am: 01.10.2003, 21:45 Titel: Quads |
|
|
Wenn ich mit herkömmlichen Sprites arbeite, habe ich das problem, dass ich bei jedem Sprite die Oberfläche sperren muss. Das kostet Zeit. Im 3Dbereich, kann man viele Punkte "in einem Rutsch" zeichen und sperrt die Oberfläche nur einmal. Das Ergebnis wäre z.B. ein Sternenfeld mit z.B. 10000 Punkten. und 10000mal die Oberfläche sperren würde auch zuviel zeit kosten. Kann man auch Quads in einem Rutsch zeichnen? Ich weiß nur wie das bei Punkten aussieht. Wenn ja: wie sieht das dann aus? _________________ Kein Rückzug! Kein Aufgeben! |
|
Nach oben |
|
|
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 02.10.2003, 09:33 Titel: |
|
|
Hallo,
meinst du mit Quads das gleiche wie ich? Naemlich ein aus 2 Dreiecken zusammengesetztes Viereck?
Wenn ja, dann zwar schon, aber das kostet dich eine immense Rechenzeit. Da ist einmal Oberflaeche sperren und wieder entsperren ja nix gegen... ?? |
|
Nach oben |
|
|
LeeDiGer Super JLI'ler
Anmeldedatum: 31.08.2003 Beiträge: 366 Wohnort: Duisburg Medaillen: Keine
|
Verfasst am: 02.10.2003, 09:42 Titel: |
|
|
Ja. Genau die meine ich. Also du glaubst, Quads sind langsamer als normale Sprites, oder wie siehst du das? _________________ Kein Rückzug! Kein Aufgeben! |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 02.10.2003, 10:36 Titel: |
|
|
Er meint damit das jeder Draw befehl extrem viel Zeit kostet. Deshalb solltest du einen Indexbuffer für gleiche Quads erstellen und mit diesem Indexbuffer alle gleichen Objekte auf einmal rendern. Mit DrawIndexedPrimtive. _________________ "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 |
|
|
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 02.10.2003, 10:42 Titel: |
|
|
Mhm... genau das meinte ich
Allerdings:
Einerseits geht es bei sagen wir 20 Quads im Bild nicht so sehr an die Speed. Bei deiner genannten Zahl oben (10000 Punkte?) allerdings hilft dir auch kein Indexbuffer mehr. Das ist zwar alles drinnen, laesst aber nicht mehr viel Platz in deiner Performance. Meiner Meinung nach.
Natuerlich nur, wenn entweder die Punkte 10000 Punkte/4 (doppelte an den Ecken nicht gerechnet) = 2250 Quads ergeben oder gar 10000 Quads ergeben sollen?? Man muesste jetzt wissen, was du damit vorhast. Ein Starfield wuerd ich nach wie vor mit Surfaces machen. |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 02.10.2003, 10:45 Titel: |
|
|
Wenn du dann noch für jedes Quad das du zeichnen willst ein Statechange durchführst (zb Transparenz aktvieren,...) dann geht die Performance noch extremer in den Keller. _________________ "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 |
|
|
LeeDiGer Super JLI'ler
Anmeldedatum: 31.08.2003 Beiträge: 366 Wohnort: Duisburg Medaillen: Keine
|
Verfasst am: 02.10.2003, 11:07 Titel: |
|
|
Ich will ja jetzt mit Quads auch keine einzelnen Punkte malen, schon gar nicht 10000. Ich will jetzt z.B. 20 gleiche Raumschiffe und 50 gleiche Laserstrahlen zeichnen. Hat jemand vielleicht ein Beispiel dafür, wie das aussehen könnte? Wie gesagt: bei Punkten wüsste ich noch wie das geht. Einzelne Quads kann ich auch, aber jetzt in einem Rutsch wie bei den Punkten könnte ich noch nicht. _________________ Kein Rückzug! Kein Aufgeben! |
|
Nach oben |
|
|
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 02.10.2003, 11:29 Titel: |
|
|
Hmm?
Also du willst Primitives, in dem Fall Quads dazu verwenden, um in einem eigentliche 2D Spiel deien Raumschiffe und Laser zu zeichnen? Halte ich persoenlich fuer keine gute Idee, da dir das Null Vorteile bringt. Ich benutze Quads um ein 3D-Partikelsystem zu animieren und so. Da hat man ein festes State und ein festes Quad und das lohnt sich.
Solltest du das ganze in 3D machen, frage ich mich, wieso deine Modelle keine Meshes sind und deine Laser keine Lines? Ok.. gut bei den Lasern wuerd ich mir auch Billboards eingehen lassen, wenn sie gut aussehen sollen.
Ist es aber originaer ein 2D-Spiel, bleib doch bei Sprites? Ich habe keine Messungen durchgefuehrt, aber ich denke die sind wesentlich schneller fuer den Zweck als Billboards oder in deinem Fall Quads?
Ansonsten zu deiner Frage, die ich glaube ich nur halb verstanden habe:
Ich wuerde einmal alle Quads zu Beginn des Programms erzeugen (oder wann du es eben brauchst), in einen Index/Vertexbuffer schreiben und dann per SetStream und DrawIndexedPrimitiveUp zeichnen. So in etwa grob... |
|
Nach oben |
|
|
LeeDiGer Super JLI'ler
Anmeldedatum: 31.08.2003 Beiträge: 366 Wohnort: Duisburg Medaillen: Keine
|
Verfasst am: 02.10.2003, 16:43 Titel: |
|
|
Mit dem Befehl DrawIndexedPrimitiveUp konnte man ja mit einer Pointlist ne bestimmte Anzahl an Punkten zeichnen. Den musste man auch nur einmal ausführen. Ich hab auch mal geschaut wie das ist, wenn man den befehl 10000mal ausführt und dann jedesmal nur einen Punkt zeichnet. es war viel langsamer. Kann man das nicht auf Quads übertragen? Oder ist es nur möglich diese einzeln zu zeichnen? _________________ Kein Rückzug! Kein Aufgeben! |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 02.10.2003, 18:08 Titel: |
|
|
Wenn du anstatt Quads nur Punkte zeichnen willst dann nutze den FillStyle POINTS damit kannst du auch PointSprites zeichnen was ideal für Partikeleffekte ist.
Mal ne Frage: Wie mache ich aus Quads Billboards ? Bei mir läuft das nicht mehr und weis echt nicht wie das geht. _________________ "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: 02.10.2003, 18:45 Titel: |
|
|
Hallo,
Quad -> Billboard
Textur drauf (mit Alphawerten), Alphatesten enablen, Billboard immer zur Camera aurichten, fertig.
Christian |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 02.10.2003, 18:47 Titel: |
|
|
Wie richte ich das genau auf die camera auf ? Einfach die Rotationsdaten übergeben ? So mach ich es ja auch aber ab und zu drehen sich die Dinger falsch. _________________ "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 |
|
|
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 02.10.2003, 18:56 Titel: |
|
|
Hmmm also ich mache das so, ja. Ich uebergebe die aktuellen Rotationsdaten der aktiven Kamera und Ende. Funktioniert einwandfrei.
Wie drehen sich die denn falsch?? |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 02.10.2003, 19:03 Titel: |
|
|
Ich glaub das ich den fehler gefunden habe: Meine Rotationsmatrix arbeitete mit -Y bei der Drehung. _________________ "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 |
|
|
LeeDiGer Super JLI'ler
Anmeldedatum: 31.08.2003 Beiträge: 366 Wohnort: Duisburg Medaillen: Keine
|
Verfasst am: 21.08.2004, 17:29 Titel: |
|
|
Wie berechnet man denn die Y-Achse des Billboards?
Ich hab zunächst die Z-Achse aus Start und Endpunkt berechnet. An die X-Achse würde ich dann mit dem Kreuzprodukt aus Z- und Y-Achse kommen. Aber an der Y-Achse scheiterts noch bei mir. _________________ Kein Rückzug! Kein Aufgeben! |
|
Nach oben |
|
|
|