glBufferSubData

Aus DGL Wiki
Version vom 21. Februar 2014, 17:51 Uhr von Glawesome (Diskussion | Beiträge) (Siehe auch)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

glBufferSubData

Name

glBufferSubData - Modifiziert einige oder alle Daten, die im Datenspeicher eines Puffer-Objekts liegen.


Delphi-Spezifikation

procedure glBufferSubData(target: TGLenum; offset: TGLsizei; size: TGLsizei; const data: PGLvoid); 


Parameter

target Ziel des Puffer-Objekts. Muss GL_ARRAY_BUFFER oder GL_ELEMENT_ARRAY_BUFFER sein.
offset Versatz/Offset der Daten in data.
size Legt die Größe der zu ersetzenden Daten in basic machine units fest.
data Zeiger auf die Quelldaten im Arbeitsspeicher des Klienten.


Beschreibung

glBufferSubData modifiziert einen bestimmten Bereich im Datenspeicher eines Puffer-Objektes.

Über target wird angegeben, bei welchem aktuell gebundenem Puffer-Objekt Daten ersetzt werden sollen. Einzig mögliche Werte sind GL_ARRAY_BUFFER und GL_ELEMENT_ARRAY_BUFFER.

Den Versatz des Anfangs der zu ersetzenden Daten zum Anfang des Puffers im Speicher legt man mit offset und die Größe der Daten mit size fest. Als Einheit werden basic machine units verwendet.

data spezifiziert ein Stück Clientspeicher der Größe size (in basic machine units), welches die Daten enthält, mit denen man den Inhalt des Puffers überschreiben will.


Hinweise

glBufferSubData ist erst ab OpenGL Version 1.5 verfügbar!

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 erlaubter Wert ist.
GL_INVALID_VALUE wird generiert, wenn offset oder size kleiner als 0 ist, oder wenn offset + size größer ist als GL_BUFFER_SIZE. GL_INVALID_OPERATION wird generiert, wenn das zu modifizierende Puffer-Objekt mittels glMapBuffer gemappt wird (GL_BUFFER_MAPPED ist GL_TRUE).


Zugehörige Wertrückgaben

glGetBufferParameter mit Token GL_BUFFER_SIZE gibt die Größe des Puffer-Objektes in basic machine units zurück.
glGetBufferParameter mit Token GL_BUFFER_MAPPED gibt zurück, ob ein Puffer-Objekt momentan gemappt wird.
glGetBufferSubData mit target GL_ARRAY_BUFFER oder GL_ELEMENT_ARRAY_BUFFER gibt den Inhalt des Datenspeichers des aktuellen Puffer-Objektes zurück.


Siehe auch

glBindBuffer, glBufferData, glDeleteBuffers, glGenBuffers, glGetBufferParameter, glGetBufferPointerv, glGetBufferSubData, glIsBuffer, glMapBuffer, glUnmapBuffer