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

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

11

15.06.2010, 15:37

Wenn du nur ein paar Quads rendern willst wird es vermutlich keinen großen Unterschied machen was du verwendest. Ich würde aber mal davon ausgehen dass man, vor allem wenn man recht viele Quads rendern will, mit VBOs deutlich schneller sein kann (ich denke da an Instancing etc.). Konkret müsste man das natürlich, wie David_pb schon gesagt hat, im Kontext der jeweiligen Anwendung evaluieren. glBegin/glEnd und Konsorten sind natürlich nett und sehr easy zu verwenden, sind aber einfach schon lange nicht mehr zeitgemäß. Wenn man aktuelle Hardware optimal nutzen will kommt man um VBOs, Shader, usw. nicht herum.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dot« (15.06.2010, 15:43)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

12

15.06.2010, 15:57

Nur um das vielleicht noch zu unterstreichen: In Direct3D sind Vertex Buffer nicht ohne Grund seit D3D8 der einzige Weg um überhaupt was zu rendern. Und das kam 2000, also vor 10 Jahren raus...

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (15.06.2010, 16:17)


drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

13

15.06.2010, 16:52

Nur um das vielleicht noch zu unterstreichen: In Direct3D sind Vertex Buffer nicht ohne Grund seit D3D8 der einzige Weg um überhaupt was zu rendern. Und das kam 2000, also vor 10 Jahren raus...

:whistling:

Zitat von »msdn«

This method is intended for use in applications that are unable to store their vertex data in vertex buffers. [..]

IDirect3DDevice9:: DrawPrimitiveUP

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

14

15.06.2010, 17:00

Ich dachte schon dass das jetzt kommen wird ;)

Die Draw*PrimitiveUP() Methoden verwenden afaik intern auch nur einen dynamischen VertexBuffer, das noch dazu relativ ineffizient und sind darum aber ner gewissen Batchgröße elends langsam. Abseits von Einsteigertutorials wo sie oft verwendet werden um die Leute nicht gleich mit Code zu erschlagen haben die also keine praktische Relevanz. Solltest du jemals feststellen dass Draw*PrimitiveUP() schneller ist als dein normaler VertexBuffer basierter Code machst du jedenfalls etwas ganz gravierend falsch.

Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von »dot« (15.06.2010, 17:15)


drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

15

15.06.2010, 17:22

Hehe.

Klar sind VB's besser, aber ich war einfach ein wenig von der Aussage, dass es nicht möglich seie erstaunt. ;)
Ich hätte auch nichts geschrieben, wenn da nicht schon explizit steht, dass es ohne Vertexbuffer gemacht wird (oder zumindest gehen muss).

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

16

15.06.2010, 17:29

Klar sind VB's besser, aber ich war einfach ein wenig von der Aussage, dass es nicht möglich seie erstaunt. ;)
Ich hätte auch nichts geschrieben, wenn da nicht schon explizit steht, dass es ohne Vertexbuffer gemacht wird (oder zumindest gehen muss).

Es wird aber mit VBs gemacht. Die Funktion versteckt einfach das verwenden des VB vor dir, deswegen verwendest du effektiv aber immer noch einen VB auch wenn dus nicht mitbekommst. Dass das so ist steht zwar nicht explizit in der Doku, kannst du aber bei google in einem Forum/Blog/etc. deiner Wahl nachlesen ;)

Edit: Was die Performance anbelangt findet man da sogar nen Forenpost wo DrawPrimitiveUP() langsamer war als ein Softwarerenderer auf den gleichen Daten xD
Viel mehr braucht man dazu nicht zu sagen denk ich...

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »dot« (15.06.2010, 17:39)


David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

17

15.06.2010, 18:31

Apropos VBO Performance: Ob VBOs tatsächlich den versprochenen Performanceboost bringen hängt tatsächlich stark von verschiedenen Faktoren ab. Zum Beispiel dem verwendeten Grafikadapter. Angeblich (ich habs nicht getestet) sollen Vertexbuffer Objects für einige Adapter (z.B. diverse mit < SM4) nicht wirklich performant implementiert sein, z.T. wohl auch so schlecht das alternativen wie Compiled Vertexarrays, Displaylisten, .. wesentlich im Vorteil sind. Aber wie gesagt: die tatsächliche Performance ist stark abhängig von vielen Dingen (z.B. auch Mischformen VBO/Client-Side-Storage).

Interessant zu dem Thema: VBOs strangely slow?
@D13_Dreinig

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

18

15.06.2010, 20:19

Was die Performance anbelangt findet man da sogar nen Forenpost wo DrawPrimitiveUP() langsamer war als ein Softwarerenderer auf den gleichen Daten xD
Viel mehr braucht man dazu nicht zu sagen denk ich...

Das kann ich zumindest was 2D Grafik anbelangt aus eigener Erfahrung bestätigen ^^.
Ansonsten danke für eure Antworten =)

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

19

19.06.2010, 18:47

Da es ab OpenGL3 keine Fixed-Function-Pipeline mehr gibt, wo kann man sich anschauen, wie der OpenGL Shader aussehen muss, damit alles genau so aussieht wie mit Fixed-Function-Pipeline?
Also ich suche quasi einen Shader, der alles genau so macht, wie es normaler Weise in der Fixed-Function-Pipeline passiert. Abfragen, wie viele Texturen verwendet werden, ist Fog enabled, is Light enabled usw. ...

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

20

19.06.2010, 18:52

Blöde Frage aber warum genau willst du das? Schreib dir doch einfach passende Shader je nachdem was du haben willst!?

Werbeanzeige

Ähnliche Themen