glBindBuffer: Unterschied zwischen den Versionen
Flo (Diskussion | Beiträge) K (→Beschreibung) |
Flash (Diskussion | Beiträge) (→glBindBuffer: Überarbeitet anhand einer OpenGL ES Spec.) |
||
Zeile 14: | Zeile 14: | ||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
− | procedure '''glBindBuffer'''(''target'' : | + | procedure '''glBindBuffer'''(''target'' : TGLenum; ''buffer'' : TGLuint) |
− | |||
Zeile 26: | Zeile 25: | ||
|- | |- | ||
! ''buffer'' | ! ''buffer'' | ||
− | | Ein OpenGL Name (eine natürliche Zahl. Die Zahl 0 ist für GL reserviert) | + | | Ein [[OpenGL Name]] (eine natürliche Zahl. Die Zahl 0 ist für GL reserviert) |
|} | |} | ||
+ | |||
== Beschreibung == | == Beschreibung == | ||
− | + | '''glBindBuffer''' ermöglicht es benannte Puffer zu erstellen und zu benutzen. Ein Aufruf von '''glBindBuffer''' mit GL_ARRAY_BUFFER oder GL_ELEMENT_ARRAY_BUFFER als ''target'' und einem gultigen OpenGL Namen für ''buffer'' bindet eben diesen Puffer an das mit ''target'' angegebene Ziel. | |
− | + | ||
− | + | ||
+ | Puffernamen sind vorzeichenlose Ganzzahlen. Die 0 ist reserviert für die GL. | ||
+ | |||
+ | |||
+ | Wenn ein Puffer an ein Ziel gebunden wird, wird die bisherige Bindung eines anderen Puffers an das Ziel gebrochen/aufgehoben. | ||
Ein neues Buffer Objekt wird erzeugt in dem man einen nichtgenutzen Namen(Zahl aus IN mit 0) an GL_ARRAY_BUFFER bindet. Einen solchen Namen erhält man in dem man [[glGenBuffers]] aufruft. | Ein neues Buffer Objekt wird erzeugt in dem man einen nichtgenutzen Namen(Zahl aus IN mit 0) an GL_ARRAY_BUFFER bindet. Einen solchen Namen erhält man in dem man [[glGenBuffers]] aufruft. | ||
− | Der Speicher des neuen Puffers ist mit 0 initialisiert. Jeder Puffer bietet noch eine Reihe von Einstellungen, welche folgender Tabelle zu entnehmen sind: | + | Der Speicher des neuen Puffers ist mit 0 initialisiert. Der neue Puffer verfügt weiterhin über folgende Eigenschaften. |
+ | |||
+ | {| {{Prettytable_B1}} | ||
+ | ! Name | ||
+ | ! Wert | ||
+ | |- | ||
+ | |GL_BUFFER_SIZE | ||
+ | |0 | ||
+ | |- | ||
+ | |GL_BUFFER_USAGE | ||
+ | |GL_STATIC_DRAW | ||
+ | |- | ||
+ | |GL_BUFFER_ACCESS | ||
+ | |GL_WRITE_ONLY | ||
+ | |} | ||
+ | |||
+ | |||
+ | Es ist möglich ein existierenden Puffer mit '''glBindBuffer''' zu binden. Falls dies erfolgreich verläuft wird keine Einstellung des Puffers geändert. (Auch hier werden alle vorher existierenden Bindungen bezüglich des Ziels aufgehoben. | ||
+ | |||
+ | Operationen auf das gebunde Ziel, beeinflussen das Puffer Objekt solange es gebunden ist. Abfragen bezüglich des gebunden Ziels liefern Informationen über den Status des Puffer Objektes. | ||
+ | |||
+ | |||
+ | Vertex Daten Arrays werden im Speicher des Clients gespeichert. Manchmal ist es aus performance Gruenden erforderlich die Daten im Speicher des Servers zu speichern. GL Puffer Objekte erlauben es den Clienten mit diesem Speicher zu arbeiten. (d.h.: Speicher anzufordern, zu initialisieren und davon rendern) | ||
+ | |||
+ | Jeder Puffer bietet noch eine Reihe von Einstellungen, welche folgender Tabelle zu entnehmen sind: | ||
{| {{Prettytable_B1}} | {| {{Prettytable_B1}} | ||
Zeile 71: | Zeile 99: | ||
|} | |} | ||
− | |||
− | + | == Hinweise == | |
+ | Im Ausgangszustand ist der reservierte Name 0 an GL_ARRAY_BUFFER und GL_ELEMENT_ARRAY_BUFFER gebunden. Da niemals ein Pufferobjekt durch 0 bezeichnet werden kann, werden alle Anfragen oder Manipulationen bezüglich der beiden Ziele OpenGL Fehler verursachen solange 0 gebunden ist. | ||
− | + | Solange ein Pufferobjekt gebunden ist, beeinflussen alle GL Operationen auf diesem Objekt alle anderen Bindungen des Objekts. | |
− | + | ||
+ | '''glBindBuffer''' ist erst in OpenGL Version 1.5 verfügbar! | ||
== Fehlermeldungen == | == Fehlermeldungen == | ||
− | + | '''GL_INVALID_ENUM''' wird generiert wenn ''target'' einen ungueltigen Wert hat. | |
Version vom 2. Mai 2006, 10:00 Uhr
(Mehr Informationen/weitere Artikel) {{{1}}} |
Inhaltsverzeichnis
TODO
- Parametertypen ueberpruefen. Sind C/C++ Typen bisher.
glBindBuffer
Name
glBindBuffer - Bindet einen benannten Puffer an ein Ziel.
Delphi-Spezifikation
procedure glBindBuffer(target : TGLenum; buffer : TGLuint)
Parameter
target | Das Ziel an das der Puffer gebunden wird. Mögliche Werte: GL_ARRAY_BUFFER oder GL_ELEMENT_ARRAY_BUFFER |
---|---|
buffer | Ein OpenGL Name (eine natürliche Zahl. Die Zahl 0 ist für GL reserviert) |
Beschreibung
glBindBuffer ermöglicht es benannte Puffer zu erstellen und zu benutzen. Ein Aufruf von glBindBuffer mit GL_ARRAY_BUFFER oder GL_ELEMENT_ARRAY_BUFFER als target und einem gultigen OpenGL Namen für buffer bindet eben diesen Puffer an das mit target angegebene Ziel.
Puffernamen sind vorzeichenlose Ganzzahlen. Die 0 ist reserviert für die GL.
Wenn ein Puffer an ein Ziel gebunden wird, wird die bisherige Bindung eines anderen Puffers an das Ziel gebrochen/aufgehoben.
Ein neues Buffer Objekt wird erzeugt in dem man einen nichtgenutzen Namen(Zahl aus IN mit 0) an GL_ARRAY_BUFFER bindet. Einen solchen Namen erhält man in dem man glGenBuffers aufruft.
Der Speicher des neuen Puffers ist mit 0 initialisiert. Der neue Puffer verfügt weiterhin über folgende Eigenschaften.
Name | Wert |
---|---|
GL_BUFFER_SIZE | 0 |
GL_BUFFER_USAGE | GL_STATIC_DRAW |
GL_BUFFER_ACCESS | GL_WRITE_ONLY |
Es ist möglich ein existierenden Puffer mit glBindBuffer zu binden. Falls dies erfolgreich verläuft wird keine Einstellung des Puffers geändert. (Auch hier werden alle vorher existierenden Bindungen bezüglich des Ziels aufgehoben.
Operationen auf das gebunde Ziel, beeinflussen das Puffer Objekt solange es gebunden ist. Abfragen bezüglich des gebunden Ziels liefern Informationen über den Status des Puffer Objektes.
Vertex Daten Arrays werden im Speicher des Clients gespeichert. Manchmal ist es aus performance Gruenden erforderlich die Daten im Speicher des Servers zu speichern. GL Puffer Objekte erlauben es den Clienten mit diesem Speicher zu arbeiten. (d.h.: Speicher anzufordern, zu initialisieren und davon rendern)
Jeder Puffer bietet noch eine Reihe von Einstellungen, welche folgender Tabelle zu entnehmen sind:
Name | Type | Startwert | erlaubte Werte |
---|---|---|---|
GL_BUFFER_SIZE | integer | 0 | jede positive Zahl |
GL_BUFFER_USAGE | enum | GL_STATIC_DRAW | GL_STREAM_DRAW, GL_STREAM_READ, GL_STREAM_COPY, GL_STATIC_DRAW, GL_STATIC_READ, GL_STATIC_COPY, GL_DYNAMIC_DRAW, GL_DYNAMIC_READ, GL_DYNAMIC_COPY |
GL_BUFFER_ACCESS | enum | GL_READ_WRITE | GL_READ_ONLY, GL_WRITE_ONLY, GL_READ_WRITE |
GL_BUFFER_MAPPED | boolean | FALSE | TRUE, FALSE |
GL_BUFFER_MAP_POINTER | void* | NULL | address |
Hinweise
Im Ausgangszustand ist der reservierte Name 0 an GL_ARRAY_BUFFER und GL_ELEMENT_ARRAY_BUFFER gebunden. Da niemals ein Pufferobjekt durch 0 bezeichnet werden kann, werden alle Anfragen oder Manipulationen bezüglich der beiden Ziele OpenGL Fehler verursachen solange 0 gebunden ist.
Solange ein Pufferobjekt gebunden ist, beeinflussen alle GL Operationen auf diesem Objekt alle anderen Bindungen des Objekts.
glBindBuffer ist erst in OpenGL Version 1.5 verfügbar!
Fehlermeldungen
GL_INVALID_ENUM wird generiert wenn target einen ungueltigen Wert hat.
Siehe auch
glDeleteBuffers, glGenBuffers, glBufferData, glBufferSubData, glMapBuffer, glUnmapBuffer