bufferData - Verwendungsparameter Unterschiede

8

Beim Lesen der Spezifikation bei Khronos fand ich:

%Vor%

'usage' Parameter kann sein: STREAM_DRAW, STATIC_DRAW oder DYNAMIC_DRAW

Meine Frage ist, welche soll ich verwenden? Was sind die Vorteile, wo liegen die Unterschiede? Warum sollte ich stattdessen STATIC_DRAW verwenden?

Danke.

    
Abstract Algorithm 09.05.2013, 13:04
quelle

1 Antwort

16

Für 'Desktop' OpenGL gibt es eine gute Erklärung hier:

Ссылка

Im Grunde ist der Verwendungsparameter ein Hinweis für OpenGL / WebGL, wie Sie den Puffer verwenden möchten. Das OpenGL / WebGL kann dann den Puffer abhängig von Ihrem Hinweis optimieren.

Das OpenGL ES docs schreibt Folgendes, was nicht genau dasselbe ist wie für OpenGL (bedenke, dass WebGL von OpenGL ES geerbt wurde):

STREAM

  • Der Inhalt des Datenspeichers wird einmal geändert und höchstens einige Male verwendet.

STATISCH

  • Der Inhalt des Datenspeichers wird einmal geändert und mehrmals verwendet.

DYNAMISCH

  • Der Inhalt des Datenspeichers wird wiederholt geändert und mehrmals verwendet.

Die Art des Zugriffs muss lauten:

DRAW

  • Der Inhalt des Datenspeichers wird von der Anwendung geändert und als Quelle für GL-Zeichnungs- und Bildspezifikationsbefehle verwendet.

Die gebräuchlichste Verwendung ist STATIC_DRAW (für statische Geometrie), aber ich habe kürzlich ein kleines Partikelsystem erstellt, bei dem DYNAMIC_DRAW mehr Sinn macht (die Partikel werden in einem einzigen Puffer gespeichert, wo Teile des Puffers aktualisiert werden, wenn Partikel emittiert werden) ).

Ссылка

Codeausschnitt:

%Vor%     
Mortennobel 09.05.2013, 15:21
quelle

Tags und Links