Name
glBufferData
创建和初始化一个buffer object的数据存储。
C Specification
void glBufferData( GLenum target,
GLsizeiptr size,
const GLvoid * data,
GLenum usage);
Parameters
target
指定target buffer object。必须是GL_ARRAY_BUFFER or GL_ELEMENT_ARRAY_BUFFER常量。
size
指定buffer object的新data store的大小。
data
指定即将被拷贝进data store并初始化的数据的指针,或者null,如果没有data要拷贝。
usage
指定你希望data store使用的模式。必须是GL_STREAM_DRAW, GL_STATIC_DRAW, or GL_DYNAMIC_DRAW.
Description
1.glBufferData为绑定在target上的buffer object currently创建了一个新的data store。任何之前存在的data store被删除。新创建的data store将被指定size和usage.如果data参数为NULL,data store将被这个pointer指向的data初始化。
2.usage参数提示了在GL实现中一个a buffer object’s data store将如何被访问。这使GL做出更明智的可能显著提升性能的选择。然而,如果没有,这将限制data store的准确的usage。usage可以被拆成两部分:一,被访问的频率(修改或使用),二,访问的性质。访问的频率是如下几个之一:
STREAM
该data store内容将被修改一次,且被使用的次数也很少;
STATIC
该data store内容将被修改一次,但会被多次使用;
DYNAMIC
该data store内容将被不断修改,且被多次使用;
访问的性质如下:
DRAW
该data store内容将被应用程序修改,且被当做GL渲染和图像设置命令的源数据。
Notes
1.如果data为null,指定了size大小的data store仍然会被创建,但它的内容是未初始化的,因而也是未定义的。
2.客户端必须针对客户端平台始终保持数据元素的对齐,并且一个基本的要求是,一个offset必须是N的平方?(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
NN.)