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

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

11

27.09.2011, 10:39

Visual Studio 2010 hat einen Profiler eingebaut.

Den Hinweis mit den Debug-Primitives möchte ich unterstreichen. Den Hinweis zur Vorsortierung nach States umso mehr. Bei mir sieht das grade so aus:

Pro Renderjob wird nur zwischen Einzelobjekt, Einzel-Objekt mit Bones oder Objektgruppe per Instancing. Die Unterscheidung beeinflusst aber nur die Wahl der Vertex-Deklaration und ein paar Zeilen im VertexShader, der Rest ist auch gleich. Trotzdem empfiehlt es sich, nach diesen Gruppen zuerst zu sortieren, da ein Wechsel der Vertex-Deklaration mit das teuerste unter den Treiberaufgaben ist. Wir hatten sogar zwischendurch mal einen Modus, wo selbst Einzelobjekte per Einzel-Instancing gezeichnet wurden, was nochmal ein paar Prozent Performance gebracht hat.

Ich rate dringend davon ab, ein Sprite als einzelnen DrawCall zu rendern. Das wäre genauso albern wie jeden Punkt in der Punktwolke einzeln zu rendern. Sammle alle ähnlichen Sprites, packe sie in einen dynamischen VertexBuffer, und render sie auf einmal. Punktwolken und Linien würde ich ebenso zur Laufzeit erst sammeln und dann in einem Rutsch rendern. Mach Dir eine einfache DrawLine( Start, Ziel, Farbe)-Funktion, die die Engine alle sammelt und nach allem Kram dann rendert. Das ist ein wertvolles Debug-Werkzeug. Abgesehen davon rendert man in einem Spiel einfach nie Linien oder Punktwolken - den Teil kannst Du Dir meines Erachtens sparen.

Außerdem empfehle ich noch ein schlichtes Layer-System. Mach nicht nur eine Renderjob-Queue, die Du dann sortierst und abarbeitest, mach ein Dutzend und erlaube dem Aufrufer, dass er die Wunsch-Queue angibt. Das ist schnell gemacht, erweist sich auf lange Sicht aber durchaus als nützlich.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

12

27.09.2011, 10:53

Visual Studio 2010 hat einen Profiler eingebaut.

Afaik nur in den ganz hohen Editionen. Professional hats jedenfalls nicht und Express ganz sicher nicht ;)

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

13

27.09.2011, 11:03

Stimmt. Gerade nachgeschaut - es ist die Ultimate aus dem MSDNAA-Programm. Darin gibt es einen Menüpunkt Analyse -> Leistungsassistent, der mit Sampling, Instrumentierung oder sogar Threadblockaden arbeiten kann. Nützliche Erfindung.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

botlin

Treue Seele

  • »botlin« ist der Autor dieses Themas

Beiträge: 139

Wohnort: Berlin

Beruf: Fachinformatiker für Anwendungsentwicklung, Student Internationale Medieninformatik

  • Private Nachricht senden

14

27.09.2011, 13:22

@schrompf: Wollte nochmal nachfragen wie du das mit dem Layersystem meinst. Ich seh momentan nicht wirklich den Nutzen dadrin.
Vieleicht stell ich es mir auch einfach nur falsch vor. Hast du ein Besipiel wo man sowas gebrauche kann?
Ich stell mir darunter nur mehrere Renderqueue's vor.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

15

27.09.2011, 13:29

Ich stell mir darunter nur mehrere Renderqueue's vor.

Na genau das meint er ja auch damit!?
Beispiel: Transparente Objekte zum Schluss rendern.

botlin

Treue Seele

  • »botlin« ist der Autor dieses Themas

Beiträge: 139

Wohnort: Berlin

Beruf: Fachinformatiker für Anwendungsentwicklung, Student Internationale Medieninformatik

  • Private Nachricht senden

16

27.09.2011, 13:33

Achso okay!Danke

Werbeanzeige

Ähnliche Themen