glBindBuffer

Aus DGL Wiki
Wechseln zu: Navigation, Suche
Hinweis: Dieser Artikel ist noch unvollständig.
(Mehr Informationen/weitere Artikel)

{{{1}}}

Incomplete.jpg


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 mit glGenBuffers angeforderter OpenGL Namen oder die Zahl 0, welche für die GL reserviert ist.

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.

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 OpenGL Namen an GL_ARRAY_BUFFER bindet. Einen solchen Namen erhält man in dem man glGenBuffers aufruft.

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.)

doppelte Information. Muss noch überarbeitet werden.

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.

Solange ein Pufferobjekt gebunden ist, beeinflussen alle GL Operationen auf diesem Objekt alle anderen Bindungen des Objekts.


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)

Der Speicher des neuen Puffers ist mit 0 initialisiert. Jeder Puffer bietet noch eine Reihe von Einstellungen, welche folgender Tabelle zu entnehmen sind:

Name Type Wert nach Puffer Erstellung 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 (laut OpenGL 1.5 und 2.0 Spezifikationen)
  • GL_WRITE_ONLY (laut Aussage eines anderen Artikels)
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.

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