OpenGL缓冲对象:glFlushMappedBufferRange、glFlushMappedNamedBufferRange简介

  1. OpenGL缓冲对象概念
  2. 缓冲区对象 Buffer Objects API列表

  1. 缓冲区对象 Buffer Objects
  2. 创建和绑定缓冲区对象 Creating and Binding Buffer Objects
  3. 创建缓冲对象数据存储 Creating Buffer Object Data Stores
  4. 修改缓冲对象数据存储 Modifying Buffer Object Data Stores
  5. Clear缓冲对象数据存储 Clear Buffer Object Data Stores
  6. 映射映射缓冲数据 Mapping Buffer Data
  7. 刷新映射缓冲数据 Flush Buffer Data
  8. 取消映射缓冲数据 Unmapping Buffer Data
  9. 使缓冲区数据无效 Invalidating Buffer Data
  10. 缓冲区间复制 Copying Between Buffers
  11. 缓冲对象查询 Buffer Object Queries

当一个缓冲对象使用 MAP_FLUSH_EXPLICIT_BIT 标志进行映射时,如果对映射范围内的数据进行了修改,可以通过以下命令来指示这些修改:

  • void glFlushMappedBufferRange( GLenum target, GLintptr offset, GLsizeiptr length );
  • void glFlushMappedNamedBufferRange( GLuint buffer, GLintptr offset, GLsizeiptr length );

对于 glFlushMappedBufferRange 函数,需要指定目标(target),该目标必须是OpenGL规范表6.1中列出的一种类型,并且是当前绑定到该目标的缓冲对象。而对于 glFlushMappedNamedBufferRange 函数,直接通过缓冲对象的名字(buffer)来指定。

offsetlength 参数用于指定映射范围内被修改的子区域,单位为基本机器单元。这个要刷新的子区域是相对于当前已映射缓冲对象范围起始位置的偏移量。可以多次调用 FlushMapped*BufferRange 来指示不同需要刷新的子区域。

如果一个缓冲区范围同时设置了 MAP_PERSISTENT_BITMAP_FLUSH_EXPLICIT_BIT 标志,则可以调用 FlushMapped*BufferRange 确保客户端写入的数据在服务器端变得可见。对于一致存储(coherent store)中的数据,在未指定的一段时间后,它们总会变为服务器端可见。通过显式刷新,可以更精确地控制何时将更改同步至GPU。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值