glBufferSubData: Unterschied zwischen den Versionen
K (→Siehe auch) |
|||
Zeile 69: | Zeile 69: | ||
[[Kategorie:GL|BufferSubData]] | [[Kategorie:GL|BufferSubData]] | ||
[[Kategorie:GL1.5|BufferSubData]] | [[Kategorie:GL1.5|BufferSubData]] | ||
− | [[Kategorie:GL3]] | + | [[Kategorie:GL3|BufferSubData]] |
Aktuelle Version vom 21. Februar 2014, 17:51 Uhr
Inhaltsverzeichnis
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