Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Mr. Schmidt

Frischling

  • »Mr. Schmidt« ist der Autor dieses Themas

Beiträge: 24

Wohnort: Nürnberg

  • Private Nachricht senden

1

11.07.2007, 00:16

Frage zur allgemeinen Verwendung von Vertex-/Indexbuffern

Hallo alle zusammen,

ich habe eine generelle Frage zum Einsatz der beiden Buffer.

In dem vorgestellten Beispielprogramm im Buch, werden für jeden Würfel alle Vertices und Indices in den jeweiligen Buffer nacheinander geschrieben und von dort aus gezeichnet. Das bedeutet bei 2048 Würfeln, 2048*8 Vertices und 2048*36 Indices insgesammt.
In einer darauffolgenden Aufgabe soll man das Programm so umschreiben, dass nur noch ein Würfel in den Buffern gespeichert wird (also insgesamt nur 8 Vertices und 36 Indices). Damit man trotzdem 2048 Würfel bekommt, habe ich den einen Würfel einfach mehrfach durch eine jeweils andere Weltmatrix geschickt.

Meine Frage ist nun, welche Variante man bei so einem Problem allgemein verwendet oder welche sparsamer ist in der Rechenleistung etc.

Vielen Dank schonmal

the[V]oid

Alter Hase

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

2

11.07.2007, 04:43

Ich würde mal behaupten, dass im Hinblick auf die Rechenleistung beide Varianten etwa gleich effizient sind. Zeichnest du aus dem selben Buffer mehrmals, muss halt auch mehrmals der entsprechende Befehl an die Grafikkarte gehen, aber der dürfte sich in der Performance kaum bemerkbar machen. Gleichzeitig sparst du aber jede Menge Speicher (im RAM der Graka), wenn du aus dem selben Buffer mehrmals zeichnest.

PS. Dieser Beitrag basiert ausschließlich auf logische Überlegungen und ich habe eigentlich keine Ahnung 8)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

11.07.2007, 12:37

die variante jeden würfel extra mit einer anderen weltmatrix zu rendern ist im allgemeinen eher ziemlich ineffizient (vor allem bei 2048 würfeln und dx9). generell sollte man die anzahl der DrawPrimitive*() aufufe möglichst gering halten. die variante mit alles in zwei riesigen buffern ist aber auch nicht unbedingt die beste (obwohl, denke ich, in dem fall besser als ersteres). heutzutage würde man irgendeine variante von sog. "instancing" verwenden. prinzipiell legt man dabei die daten für das modell und die einzelnen weltmatritzen in separaten streams ab. so spart man speicher, bustransfer und draw calls. das ist aber ein etwas fortgeschrittenes thema ;)

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

4

11.07.2007, 13:39

ich frage mich auch, wie man das lösen soll, dass die würfel sozusagen an verschiedenen positionen gerendert werden. Also eine frage an david: Wie hast du dir die lösung der aufgabe vorgestellt, als du sie geschrieben hast?


Socke

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

11.07.2007, 14:10

Re: Frage zur allgemeinen Verwendung von Vertex-/Indexbuffer

Zitat von »"Faule Socke"«

Also eine frage an david: Wie hast du dir die lösung der aufgabe vorgestellt, als du sie geschrieben hast?


ich denke mal genau so:

Zitat von »"Mr. Schmidt"«

Damit man trotzdem 2048 Würfel bekommt, habe ich den einen Würfel einfach mehrfach durch eine jeweils andere Weltmatrix geschickt.

Mr. Schmidt

Frischling

  • »Mr. Schmidt« ist der Autor dieses Themas

Beiträge: 24

Wohnort: Nürnberg

  • Private Nachricht senden

6

12.07.2007, 02:45

Hallo,

vielen Dank für eure Antworten. Gibt es irgendwo Informationen über diese Art des "Instancing", die du beschrieben hast? Ich habe im Internet nichts richtiges darüber gefunden. Wäre nett, wenn ihr mir eine Seite darüber zeigen könnt.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

12.07.2007, 09:44

in der dx9 doku, einfach mal im index "instancing" eingeben ;)

Mr. Schmidt

Frischling

  • »Mr. Schmidt« ist der Autor dieses Themas

Beiträge: 24

Wohnort: Nürnberg

  • Private Nachricht senden

8

12.07.2007, 23:32

Danke, ich werde mir das mal ansehen, mal schauen wieviel ich davon verstehe ;)

Werbeanzeige