glBufferSubData: Unterschied zwischen den Versionen
K (→Siehe auch: glGetBufferPointer -> glGetBufferPointerv) |
K (Kategorisierung unter GL1.5) |
||
Zeile 6: | Zeile 6: | ||
'''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 37: | Zeile 38: | ||
''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. | ''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 == | ||
'''glBufferSubData''' ist erst ab OpenGL Version 1.5 verfügbar! | '''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. | + | [[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 53: | Zeile 54: | ||
'''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_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'''). | '''GL_INVALID_OPERATION''' wird generiert, wenn das zu modifizierende Puffer-Objekt mittels [[glMapBuffer]] gemappt wird ('''GL_BUFFER_MAPPED''' ist '''GL_TRUE'''). | ||
+ | |||
Zeile 58: | Zeile 60: | ||
[[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_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> | [[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. | + | [[glGetBufferSubData]] mit ''target'' '''GL_ARRAY_BUFFER''' oder '''GL_ELEMENT_ARRAY_BUFFER''' gibt den Inhalt des Datenspeichers des aktuellen Puffer-Objektes zurück. |
Zeile 66: | Zeile 68: | ||
[[Kategorie:GL|BufferSubData]] | [[Kategorie:GL|BufferSubData]] | ||
+ | [[Kategorie:GL1.5|BufferSubData]] |
Version vom 26. Mai 2008, 14:47 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