GLES2.0中文API-glBufferData

名称

glBufferData- 创建并初始化缓冲区对象的数据存储

C规范

void glBufferData(GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage);

参数

target

指定目标缓冲区对象。 符号常量必须为GL_ARRAY_BUFFER或GL_ELEMENT_ARRAY_BUFFER。

size

指定缓冲区对象的新数据存储的大小(以字节为单位)。

data

指定将复制到数据存储区以进行初始化的数据的指针,如果不复制数据,则指定NULL。

usage

指定数据存储的预期使用模式。 符号常量必须为GL_STREAM_DRAW,GL_STATIC_DRAW或GL_DYNAMIC_DRAW。

描述

glBufferData为当前绑定到target的缓冲区对象创建一个新的数据存储。 删除任何预先存在的数据存储。 使用指定的字节和usage创建新数据存储。 如果data不是NULL,则使用来自此指针的数据初始化数据存储。

usage是关于如何访问缓冲区对象的数据存储的GL实现的提示。这使GL实现能够做出更明智的决策,这可能会显着影响缓冲区对象的性能。 但是,它不会限制数据存储的实际使用。usage可以分为两部分:第一,访问频率(修改和使用),第二,访问的性质。 访问频率可能是以下之一:

STREAM

        数据存储内容将被修改一次并最多使用几次。

STATIC

        数据存储内容将被修改一次并多次使用。

DYNAMIC

        数据存储内容将被重复修改并多次使用。

访问的性质必须是:

DRAW

        数据存储内容由应用程序修改,并用作GL绘图和图像规范命令的源。

注意

如果dataNULL,则仍会创建指定大小的数据存储,但其内容仍未初始化,因此被视为未定义的。

客户端必须使数据元素与客户端平台的要求保持一致,并具有额外的基本级要求,即缓冲区内对包含N的数据的偏移量是N的倍数。

错误

GL_INVALID_ENUM target不是GL_ARRAY_BUFFER或GL_ELEMENT_ARRAY_BUFFER。

GL_INVALID_ENUM usage不是GL_STREAM_DRAW,GL_STATIC_DRAW或GL_DYNAMIC_DRAW。

GL_INVALID_VALUE size是负数

GL_INVALID_OPERATION :如果保留的缓冲区对象名称0绑定到target

GL_OUT_OF_MEMORY :如果GL无法创建具有指定大小的数据存储

相关Gets

glGetBufferParameteriv 参数 GL_BUFFER_SIZE GL_BUFFER_USAGE

另见

glBindBufferglBufferSubData​​​​​​​​​​​​​​

版权

https://www.khronos.org/registry/OpenGL-Refpages/es2.0/xhtml/glBufferData.xml

https://blog.csdn.net/flycatdeng

Copyright © 1991-2006 Silicon Graphics, Inc.本文档的许可是根据SGI Free Software B License.详见http://oss.sgi.com/projects/FreeB/.

Android,OpenGL ES,图形学

猜你喜欢

转载自blog.csdn.net/dengchukun/article/details/82664599