繁体   English   中英

我应该更喜欢 glMapBufferRange 而不是 glMapBuffer 吗?

[英]Should I prefer glMapBufferRange over glMapBuffer?

glMapBuffer文档说它只能使用 GL_READ_ONLY、GL_WRITE_ONLY 或 GL_READ_WRITE 的枚举访问说明符。

glMapBufferRange文档说它使用标志访问说明符,其中包括一种使用 GL_MAP_PERSISTENT_BIT 持久映射缓冲区的方法。

我想持久地映射缓冲区,所以即使我想映射整个缓冲区,我也应该总是使用glMapBufferRange吗? 我还没有看到有人指出这两个函数之间相当重要的区别,所以我想知道glMapBufferRange是否完全替代glMapBuffer ,或者我是否应该准备在某些情况下同时使用这两者?

(我想我只是感到困惑,因为鉴于命名,我认为只有子范围才是两个调用之间的区别。)

glMapBufferRange是在 OpenGL 3 中引入的。OpenGL 已经发展为向开发人员提供更多控制,同时尽可能保持向后兼容性。 所以glMapBuffer保持不变,并且glMapBufferRange引入了开发人员想要的明确性(不仅是子范围部分,还有其他位)。

glMapBufferRange让我想起了 Vulkan 现在可用的选项(即缓存失效和显式同步)。 对于某些用例,使用正确的标志和新功能可能会获得更好的性能。 如果您不使用任何可选标志,则行为应该等同于旧函数(子范围部分除外)。

我想我会一直使用glMapBufferRange ,因为它可以做其他任何事情。 另外,您可以稍后调整性能。 只是我的拙见:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM