【问题标题】:Keep the glMapBuffer pointer alive保持 glMapBuffer 指针处于活动状态
【发布时间】:2020-03-21 20:21:59
【问题描述】:

我目前正在使用 OpenGL - 4.4 版,我对glMapBuffer 函数有疑问。在我使用过的其他一些 API(例如 DX12 和 VK)中,您可以保持 map 函数返回的指针处于活动状态,并通过单独的调用刷新内存,而不是释放该指针。

有没有办法让这个指针保持更长的时间并更新 GPU 内存而不释放这个调用 glUnmapBuffer 的指针?

【问题讨论】:

    标签: opengl graphics rendering


    【解决方案1】:

    可以使用GL_MAP_PERSISTENT_BIT 标志分配具有immutable storage(使用GL 4.4 中的gl(Named)BufferStorage 或ARB_buffer_storage)的缓冲区对象。这允许glMap(Named)BufferRange 被赋予相同的标志,从而持久地映射缓冲区存储的该范围。

    存储为persistently mapped 的缓冲区可用于许多缓冲区操作,而无需先取消映射。但是,所有同步数据访问的责任现在都由 用户 承担。所以要习惯于使用栅栏和双缓冲到access/manipulate the data

    【讨论】:

      猜你喜欢
      • 2012-01-03
      • 2014-11-16
      • 2012-05-24
      • 2021-09-13
      • 2018-11-26
      • 2013-08-27
      • 2019-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多