glBufferData
Inhaltsverzeichnis
glBufferData
Name
glBufferData - erstellt und initialisiert den Datenspeicher eines Pufferobjekts.
Delphi-Spezifikation
procedure glBufferData(target: TGLenum; size: TGLsizei; const data: PGLvoid; usage: TGLenum);
Parameter
target | Bestimmt das Ziel des Pufferobjekts. Muss GL_ARRAY_BUFFER oder GL_ELEMENT_ARRAY_BUFFER sein. |
---|---|
size | Definiert die Größe des Datenspeichers in basic machine units. |
data | Spezifiziert die Quelldaten im Arbeitsspeicher des Klienten. |
usage | Bestimmt das erwartete Benutzungsmuster für den Datenspeicher. Akzeptiert werden GL_STATIC_DRAW und GL_DYNAMIC_DRAW. |
Beschreibung
glBufferData ermöglicht es Datenspeicher für Pufferobjekte (VBO) zu erstellen und zu initialisieren.
Wenn data nicht NULL/NIL ist, werden die Quelldaten in den Datenspeicher des Pufferobjekts kopiert. Wenn data NULL/NIL ist, ist der Inhalt des Datenspeichers undefiniert.
Für usage können folgende Werte benutzt werden:
GL_STATIC_DRAW
- Wird benutzt, wenn der Inhalt des Datenspeichers einmal durch die Anwendung gesetzt wird, und mehrfach für GL Renderbefehle benutzt wird.
GL_DYNAMIC_DRAW
- Wird benutzt, wenn der Inhalt des Datenspeichers wiederholt durch die Application geändert wird, und mehrfach für GL Renderbefehle benutzt wird.
glBufferData zerstört alle existierenden Datenspeicher und setzt die Werte der Zustandsvariablen des Pufferobjekts folgender maßen:
GL_BUFFER_SIZE initialisiert auf size. GL_BUFFER_USAGE initialisiert auf usage. GL_BUFFER_ACCESS initialisiert auf GL_WRITE_ONLY.
Klienten müssen ihre Datenelemente im Speicher konsistent und abhängig von den Anforderungen der Klientplattform ausrichten. Zu diesem Zweck exisitert eine weitere zusätzliche Anforderung, und zwar, dass der Versatz/Offset innerhalb des Puffers zwischen Daten die aus N basic machine units bestehen ein vielfaches von N sein muss.
Hinweise
usage dient nur als Performanzhinweis. Der angegebene Wert beschränkt nicht den tatsächlichen Einsatz des Datenspeichers.
glBufferData und glBufferSubData definieren zwei neue Typen die auf 64-Bit Rechnern funktionieren. Analog zu intptr t in C gibt es den neuen Typ GLintptrARB welcher anstatt von GLint benutzt werden soll, wenn absehbar ist, dass die Werte größer als 2 Miliarden werden. Des Weiteren wird der Typ GLsizeiptrARB eingeführt welcher anstatt von GLsizei benutzt werden soll, wenn absehbar ist, dass eine Anzahl größer als 2 Milliarden wird.
Beide Typen sind als vorzeichenbehaftete Ganzzahlen definiert welche groß genug sind um beliebige Zeiger zu enthalten. Daraus ergibt sich, dass sie auf Systemen mit 64-Bit Zeigern (oder mehr) eine große Menge Bits benutzen.
Fehlermeldungen
GL_INVALID_ENUM wird generiert wenn target kein zulässiger Wert übergeben wurde.
GL_INVALID_ENUM wird generiert wenn usage kein zulässiger Wert übergeben wurde.
GL_OUT_OF_MEMORY wird generiert wenn es der GL nicht möglich war einen Datenspeicher der geforderten Größe anzulegen.
Zugehörige Wertrückgaben
glGetBufferParameter mit Token GL_BUFFER_SIZE.
glGetBufferParameter mit Token GL_BUFFER_USAGE.
glGetBufferParameter mit Token GL_BUFFER_ACCESS.
Siehe auch
glBufferSubData, glBindBuffer, glDeleteBuffers, glGenBuffers