glBufferSubData: Unterschied zwischen den Versionen
Flash (Diskussion | Beiträge) K (→Siehe auch) |
K (→Siehe auch) |
||
(4 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 4: | Zeile 4: | ||
== Name == | == Name == | ||
− | '''glBufferSubData''' - Modifiziert einige oder alle Daten die im Datenspeicher eines Puffer-Objekts liegen. | + | '''glBufferSubData''' - Modifiziert einige oder alle Daten, die im Datenspeicher eines Puffer-Objekts liegen. |
+ | |||
+ | |||
− | |||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
procedure '''glBufferSubData'''(''target'': TGLenum; ''offset'': TGLsizei; ''size'': TGLsizei; const ''data'': PGLvoid); | procedure '''glBufferSubData'''(''target'': TGLenum; ''offset'': TGLsizei; ''size'': TGLsizei; const ''data'': PGLvoid); | ||
Zeile 15: | Zeile 16: | ||
{| border="1" rules="all" | {| border="1" rules="all" | ||
! ''target'' | ! ''target'' | ||
− | | | + | | Ziel des Puffer-Objekts. Muss '''GL_ARRAY_BUFFER''' oder '''GL_ELEMENT_ARRAY_BUFFER''' sein. |
|- | |- | ||
! ''offset'' | ! ''offset'' | ||
− | | | + | | Versatz/Offset der Daten in ''data''. |
|- | |- | ||
! ''size'' | ! ''size'' | ||
Zeile 24: | Zeile 25: | ||
|- | |- | ||
! ''data'' | ! ''data'' | ||
− | | | + | | Zeiger auf die Quelldaten im Arbeitsspeicher des [[Client|Klienten]]. |
|} | |} | ||
Zeile 30: | Zeile 31: | ||
== Beschreibung == | == Beschreibung == | ||
− | '''glBufferSubData''' modifiziert | + | '''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 unit''s verwendet. | ||
+ | |||
+ | ''data'' spezifiziert ein Stück Clientspeicher der Größe ''size'' (in ''basic machine unit''s), welches die Daten enthält, mit denen man den Inhalt des Puffers überschreiben will. | ||
+ | |||
− | |||
== Hinweise == | == Hinweise == | ||
− | [[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. | + | '''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. | 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. | ||
Zeile 41: | Zeile 50: | ||
+ | == Fehlermeldungen == | ||
+ | '''GL_INVALID_ENUM''' wird generiert, wenn ''target'' kein erlaubter Wert ist.<br> | ||
+ | '''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 == | == Zugehörige Wertrückgaben == | ||
− | [[glGetBufferSubData]] | + | [[glGetBufferParameter]] mit Token '''GL_BUFFER_SIZE''' gibt die Größe des Puffer-Objektes in ''basic machine units'' zurück.<br> |
+ | [[glGetBufferParameter]] mit Token '''GL_BUFFER_MAPPED''' gibt zurück, ob ein Puffer-Objekt momentan gemappt wird.<br> | ||
+ | [[glGetBufferSubData]] mit ''target'' '''GL_ARRAY_BUFFER''' oder '''GL_ELEMENT_ARRAY_BUFFER''' gibt den Inhalt des Datenspeichers des aktuellen Puffer-Objektes zurück. | ||
== Siehe auch == | == Siehe auch == | ||
− | [[ | + | [[glBindBuffer]], [[glBufferData]], [[glDeleteBuffers]], [[glGenBuffers]], [[glGetBufferParameter]], [[glGetBufferPointerv]], [[glGetBufferSubData]], [[glIsBuffer]], [[glMapBuffer]], [[glUnmapBuffer]] |
[[Kategorie:GL|BufferSubData]] | [[Kategorie:GL|BufferSubData]] | ||
+ | [[Kategorie:GL1.5|BufferSubData]] | ||
+ | [[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