名称
glBufferSubData - 更新缓冲区对象的数据存储的子集
C规范
void glBufferSubData( GLenum target,
GLintptr offset,
GLsizeiptr size,
const GLvoid * data);
参数
target
指定目标缓冲区对象。符号常量必须为GL_ARRAY_BUFFER或GL_ELEMENT_ARRAY_BUFFER。
offset
指定缓冲区对象的数据存储中的需要数据替换偏移量,以字节为单位进行测量。
size
指定要替换的数据存储区域的大小(以字节为单位)。
data
指定指向将复制到数据存储中的新数据的指针。
描述
glBufferSubData重新定义当前绑定到target的缓冲区对象的部分或全部数据存储。从字节偏移量offset开始并扩展为size字节的数据从data指向的存储器复制到数据存储器。如果offset和size一起定义超出缓冲区对象的数据存储边界的范围,则抛出错误。
注意
替换整个数据存储时,请考虑使用glBufferSubData而不是使用glBufferData完全重新创建数据存储。这避免了重新分配数据存储的成本。
考虑使用多个缓冲区对象,以避免在数据存储更新期间停止渲染管道。如果管道中的任何渲染引用glBufferSubData正在更新的缓冲区对象中的数据,特别是来自正在更新的特定区域,则在更新数据存储之前,该渲染必须从管道中消失。
客户端必须使数据元素与客户端平台的要求保持一致,并具有额外的基本级要求,即缓冲区内对包含N的数据的偏移量是N的倍数。
错误
GL_INVALID_ENUM:target不是GL_ARRAY_BUFFER或GL_ELEMENT_ARRAY_BUFFER
GL_INVALID_VALUE:offset或size为负,或者如果它们在一起,而定义超出缓冲区对象的已分配数据存储的内存区域。
GL_INVALID_OPERATION:保留的缓冲区对象名称0绑定到target
另见
版权
https://www.khronos.org/registry/OpenGL-Refpages/es2.0/xhtml/glBufferSubData.xml
https://blog.csdn.net/flycatdeng
Copyright © 1991-2006 Silicon Graphics, Inc.本文档的许可是根据SGI Free Software B License.详见http://oss.sgi.com/projects/FreeB/.