glUnmapBuffer(GL_ARRAY_BUFFER)vs glBindBuffer(GL_ARRAY_BUFFER,0)

时间:2014-08-24 20:58:31

标签: c++ opengl rendering

上述之间是否存在差异,因为它们似乎都具有相同的效果,我的假设是un-map缓冲区方法针对un映射进行了更优化,而不是将缓冲区绑定到0以取消映射

2 个答案:

答案 0 :(得分:3)

  

上述之间是否存在差异,因为它们似乎都具有相同的效果,

它们之间不仅有一些区别,它们完全不同。

  • glBindBuffer un- /选择以下OpenGL操作引用的缓冲区对象。

  • glUnmapBuffer是glMapBuffer的补充。 glMapBuffer将缓冲区映射到主机地址空间,即在映射缓冲区之后,可以通过指针访问其内容。 glUnmapBuffer释放此映射,即缓冲区内容从主机进程地址空间中消失。

因为两个功能都是正交绑定状态对地址空间映射没有影响,并且地址空间映射对绑定状态没有影响。

答案 1 :(得分:2)

不,它们没有相同的效果。绑定缓冲区0只是从一些绑定目标解除绑定缓冲区,它不会取消映射它。缓冲区映射仍然有效,可以使用。您还可以同时映射多个缓冲区。 glUnmapBuffer()只需取消映射当前绑定到目标点的缓冲区。