'\" t .\" Title: glBufferData .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 .\" Date: 03/08/2011 .\" Manual: OpenGL 3.3 .\" Source: OpenGL 3.3 .\" Language: English .\" .TH "GLBUFFERDATA" "3G" "03/08/2011" "OpenGL 3.3" "OpenGL 3\&.3" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" glBufferData \- creates and initializes a buffer object\*(Aqs data store .SH "C SPECIFICATION" .HP \w'void\ glBufferData('u .BI "void glBufferData(GLenum\ " "target" ", GLsizeiptr\ " "size" ", const\ GLvoid\ *\ " "data" ", GLenum\ " "usage" ");" .SH "PARAMETERS" .PP \fItarget\fR .RS 4 Specifies the target buffer object\&. The symbolic constant must be \fBGL_ARRAY_BUFFER\fR, \fBGL_COPY_READ_BUFFER\fR, \fBGL_COPY_WRITE_BUFFER\fR, \fBGL_ELEMENT_ARRAY_BUFFER\fR, \fBGL_PIXEL_PACK_BUFFER\fR, \fBGL_PIXEL_UNPACK_BUFFER\fR, \fBGL_TEXTURE_BUFFER\fR, \fBGL_TRANSFORM_FEEDBACK_BUFFER\fR, or \fBGL_UNIFORM_BUFFER\fR\&. .RE .PP \fIsize\fR .RS 4 Specifies the size in bytes of the buffer object\*(Aqs new data store\&. .RE .PP \fIdata\fR .RS 4 Specifies a pointer to data that will be copied into the data store for initialization, or \fBNULL\fR if no data is to be copied\&. .RE .PP \fIusage\fR .RS 4 Specifies the expected usage pattern of the data store\&. The symbolic constant must be \fBGL_STREAM_DRAW\fR, \fBGL_STREAM_READ\fR, \fBGL_STREAM_COPY\fR, \fBGL_STATIC_DRAW\fR, \fBGL_STATIC_READ\fR, \fBGL_STATIC_COPY\fR, \fBGL_DYNAMIC_DRAW\fR, \fBGL_DYNAMIC_READ\fR, or \fBGL_DYNAMIC_COPY\fR\&. .RE .SH "DESCRIPTION" .PP \fBglBufferData\fR creates a new data store for the buffer object currently bound to \fItarget\fR\&. Any pre\-existing data store is deleted\&. The new data store is created with the specified \fIsize\fR in bytes and \fIusage\fR\&. If \fIdata\fR is not \fBNULL\fR, the data store is initialized with data from this pointer\&. In its initial state, the new data store is not mapped, it has a \fBNULL\fR mapped pointer, and its mapped access is \fBGL_READ_WRITE\fR\&. .PP \fIusage\fR is a hint to the GL implementation as to how a buffer object\*(Aqs data store will be accessed\&. This enables the GL implementation to make more intelligent decisions that may significantly impact buffer object performance\&. It does not, however, constrain the actual usage of the data store\&. \fIusage\fR can be broken down into two parts: first, the frequency of access (modification and usage), and second, the nature of that access\&. The frequency of access may be one of these: .PP STREAM .RS 4 The data store contents will be modified once and used at most a few times\&. .RE .PP STATIC .RS 4 The data store contents will be modified once and used many times\&. .RE .PP DYNAMIC .RS 4 The data store contents will be modified repeatedly and used many times\&. .RE .PP The nature of access may be one of these: .PP DRAW .RS 4 The data store contents are modified by the application, and used as the source for GL drawing and image specification commands\&. .RE .PP READ .RS 4 The data store contents are modified by reading data from the GL, and used to return that data when queried by the application\&. .RE .PP COPY .RS 4 The data store contents are modified by reading data from the GL, and used as the source for GL drawing and image specification commands\&. .RE .SH "NOTES" .PP If \fIdata\fR is \fBNULL\fR, a data store of the specified size is still created, but its contents remain uninitialized and thus undefined\&. .PP Clients must align data elements consistent with the requirements of the client platform, with an additional base\-level requirement that an offset within a buffer to a datum comprising N bytes be a multiple of N\&. .SH "ERRORS" .PP \fBGL_INVALID_ENUM\fR is generated if \fItarget\fR is not one of the accepted buffer targets\&. .PP \fBGL_INVALID_ENUM\fR is generated if \fIusage\fR is not \fBGL_STREAM_DRAW\fR, \fBGL_STREAM_READ\fR, \fBGL_STREAM_COPY\fR, \fBGL_STATIC_DRAW\fR, \fBGL_STATIC_READ\fR, \fBGL_STATIC_COPY\fR, \fBGL_DYNAMIC_DRAW\fR, \fBGL_DYNAMIC_READ\fR, or \fBGL_DYNAMIC_COPY\fR\&. .PP \fBGL_INVALID_VALUE\fR is generated if \fIsize\fR is negative\&. .PP \fBGL_INVALID_OPERATION\fR is generated if the reserved buffer object name 0 is bound to \fItarget\fR\&. .PP \fBGL_OUT_OF_MEMORY\fR is generated if the GL is unable to create a data store with the specified \fIsize\fR\&. .SH "ASSOCIATED GETS" .PP \fBglGetBufferSubData\fR() .PP \fBglGetBufferParameter\fR() with argument \fBGL_BUFFER_SIZE\fR or \fBGL_BUFFER_USAGE\fR .SH "SEE ALSO" .PP \fBglBindBuffer\fR(), \fBglBufferSubData\fR(), \fBglMapBuffer\fR(), \fBglUnmapBuffer\fR() .SH "COPYRIGHT" .PP Copyright \(co 2005 Addison\-Wesley\&. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1\&.0, 8 June 1999\&. \m[blue]\fBhttp://opencontent\&.org/openpub/\fR\m[]\&.