【问题标题】:glUnmapBuffer(GL_ARRAY_BUFFER) vs glBindBuffer(GL_ARRAY_BUFFER,0)glUnmapBuffer(GL_ARRAY_BUFFER) 与 glBindBuffer(GL_ARRAY_BUFFER,0)
【发布时间】:2014-08-24 20:58:31
【问题描述】:

以上两者之间是否有区别,因为它们似乎都具有相同的效果,我的假设是 un-map 缓冲区方法更适合于 un-map,而不是将缓冲区绑定到 0 到 un-map

【问题讨论】:

    标签: c++ opengl rendering


    【解决方案1】:

    上面的有没有区别,因为它们看起来都具有相同的效果,

    它们之间不仅有一些区别,它们做的事情也完全不同。

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

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

    因为这两个功能都是正交的,所以绑定状态对地址空间映射没有影响,而地址空间映射对绑定状态也没有影响。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-26
        • 1970-01-01
        • 2020-02-10
        • 1970-01-01
        相关资源
        最近更新 更多