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

1

29.03.2013, 08:49

Zwei kleine Fragen zu Vertexbuffern

Hallo,
da im Buch steht, dass man Vertex Buffer immer "so voll wie möglich" machen sollte und
ich hier irgendwo gelesen habe, dass jemand lieber viele Würfeln in den Buffer steckt, als die DrawPrimitive Methode aufzurufen,
habe ich mich irgendwann gefragt, was denn der Sinn dahinter ist.
So nach meinem Gefühl müsste es doch Speichersparender sein, wenn ich weniger Vertizes im Buffer habe, dafür sie aber (halt mit anderen Welt-Matrix)
des öfteren zeiche! :)

Außerdem frage ich mich (da ja anscheinend viele Vertizes in einen Buffer gehören) wie ich dann viele unterschiedliche Texturen auf meine
Modelle anwende. Natürlich wäre da die Möglichkeit eine Textur zu setzen einen Teil (Vielleicht nur einen Würfel, oder so) zu rendern und
dann mit einer anderen Textur den nächsten Teil zu rendern, aber anscheinend versucht man ja Draw-Aufrufe zu vermeiden...

Hoffe ihr könnt mir helfen... 8)

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

2

29.03.2013, 10:00

Wegen der Art wie Daten zur Grafikkarte uebertragen werden und diese sie verarbeitet gibt es eine optimale Groesse fuer Vertexbuffer. Das kannst du jetzt einfach glauben oder dich naeher informieren.

In einem DrawCall kannst du den Zustand der Grafikkarte gar nicht aendern. Daher muss du deine Objekte eben entsprechend ordnen, wenn du maximale Performance haben willst.

3

29.03.2013, 10:36

Also kann ich doch nur Polygone mit der selben Textur, Material, ... in einem Rutsch rendern.... :S
(Hab eine Erklärung gefunden: http://stackoverflow.com/questions/48538…calls-expensive Beschreibt das eigentlich ziemlich gut ^^)

//Edit: Wäre es zum Beispiel möglich, dass man jedem Vertex ein zusätzliches Byte Info gibt, sozusagen einen Material und Texturen - Index? Die Grafikkarte entscheidet dann anhand des Index, welche Textur sie verwendet...?

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

4

29.03.2013, 13:27

Ab DirectX 10 mit Texture Arrays geht das. Dann sollte der Index aber über ein Dreieck hinweg konstant sein, sonst bekommst Du hinreichend hässliche Interpolationsfehler.
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.

Werbeanzeige