glBufferSubData: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (Siehe auch)
(Überarbeitung)
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.
  
 
<br>
 
<br>
Zeile 15: Zeile 15:
 
{| border="1" rules="all"
 
{| border="1" rules="all"
 
! ''target''  
 
! ''target''  
| Bestimmt das Ziel des Puffer-Objekts. Muss GL_ARRAY_BUFFER oder GL_ELEMENT_ARRAY_BUFFER sein.
+
| Ziel des Puffer-Objekts. Muss '''GL_ARRAY_BUFFER''' oder '''GL_ELEMENT_ARRAY_BUFFER''' sein.
 
|-
 
|-
 
! ''offset''  
 
! ''offset''  
| Legt den Versatz des Anfangs der zu ersetzenden Daten vom Anfang des Puffers fest. Als Einheit werden ''basic machine unit''s verwendet.
+
| Versatz/Offset der Daten in ''data''.  
 
|-
 
|-
 
! ''size''  
 
! ''size''  
Zeile 24: Zeile 24:
 
|-
 
|-
 
! ''data''  
 
! ''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.
+
| Zeiger auf die Quelldaten im Arbeitsspeicher des [[Client|Klienten]].
 
|}
 
|}
  
Zeile 30: Zeile 30:
  
 
== Beschreibung ==  
 
== Beschreibung ==  
'''glBufferSubData''' modifiziert einige oder alle Daten die im Datenspeicher eines Puffer-Objekts liegen.
+
'''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.
 
<br>
 
<br>
  
 
== Hinweise ==
 
== 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.
 
[[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.
  
Zeile 43: Zeile 50:
  
 
== Fehlermeldungen ==
 
== Fehlermeldungen ==
'''GL_INVALID_ENUM''' wird generiert wenn ''target'' kein erlaubter Wert ist.<br>
+
'''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 '''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''').
  
  
 
== 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.<br>
  
  
  
 
== Siehe auch ==
 
== Siehe auch ==
[[glBufferData]], [[glBindBuffer]], [[glDeleteBuffers]], [[glGenBuffers]]
+
[[glBindBuffer]], [[glBufferData]], [[glDeleteBuffers]], [[glGenBuffers]], [[glGetBufferParameter]], [[glGetBufferPointer]], [[glGetBufferSubData]], [[glIsBuffer]], [[glMapBuffer]], [[glUnmapBuffer]]
  
 
[[Kategorie:GL|BufferSubData]]
 
[[Kategorie:GL|BufferSubData]]

Version vom 2. Juli 2006, 17:18 Uhr

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, glGetBufferPointer, glGetBufferSubData, glIsBuffer, glMapBuffer, glUnmapBuffer