[英]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.