OPENGL—— glBufferData / glNamedBufferData

glBufferData和glNamedBuffer数据为缓冲区对象创建新的数据存储。对于glBufferData,使用当前绑定到目标的缓冲区对象。对于glNamedBufferData,将改用与缓冲区中调用者指定的ID关联的缓冲区对象。

函数原型:
void glBufferData(GLenum target,GLsizeiptr size,const void * data,GLenum usage);
void glNamedBufferData(GLuint buffer,GLsizeiptr size,const void *data,GLenum usage);

参数:
@ target 指定glBufferData的缓冲区对象绑定到的目标,该目标必须是下表中的缓冲区绑定目标之一:
@ buffer 指定glNamedBufferData函数的缓冲区对象的名称。
@ size 指定缓冲区对象的新数据存储的大小(以字节为单位)。
@ data 指定将复制到数据存储中进行初始化的数据指针,如果没有要复制的数据,则为NULL。
@ usage 指定数据存储的预期使用模式。符号常量必须是GL_STREAM_DRAW、GL_STRIAM_READ、GL_STREAM_COPY、GL_STATIC_DRAW,GL_STADIC_READ,GL_SSTATIC_COPY,GL_DYNAMIC_DRAW,GL_DYNAMIC_READ或GL_DYNA MIC_COPY。

创建新存储时,将删除任何预先存在的数据存储。新的数据存储是用指定的字节大小和使用量创建的。如果数据不为NULL,则使用此指针中的数据初始化数据存储。在其初始状态下,新数据存储未映射,它有一个NULL映射指针,其映射访问为GL_READ_WRITE。

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

访问频率可以是以下之一:
STREAM 数据存储内容将修改一次,最多使用几次
STATIC 数据存储内容将被修改一次并多次使用。
DYNAMIC 数据存储内容将被重复修改并多次使用

访问的性质可能是以下之一:
DRAW 数据存储内容由应用程序修改,并用作GL绘图和图像规范命令的源。
READ 数据存储内容通过从GL读取数据进行修改,并用于在应用程序查询时返回该数据
COPY 数据存储内容通过从GL读取数据进行修改,并用作GL绘图和图像规范命令的源。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值