【问题标题】:OpenGL Updating static VBOOpenGL 更新静态 VBO
【发布时间】:2017-09-05 15:21:05
【问题描述】:

我刚刚尝试更新一个顶点缓冲区对象 (vbo),其中包含带有静态绘制的数据。为什么我可以用glBufferSubData 更新它?我一直认为静态 vbo 是不能改的。

【问题讨论】:

    标签: java opengl buffer lwjgl


    【解决方案1】:

    GL_STATIC_DRAW 不代表不能更改数据。 glBufferDatausage 参数是对底层实现的提示,可能允许一些性能改进,但不限制实际使用。 documentation 声明:

    usage 是 GL 实现关于如何访问缓冲区对象的数据存储的提示。这使 GL 实现能够做出更智能的决策,这些决策可能会显着影响缓冲区对象的性能。但是,它并不限制数据存储的实际使用。

    【讨论】:

      【解决方案2】:

      这些只是用法提示。该规范明确指出:

      usage 被指定为九个枚举值之一。 [这九个枚举值的描述​​如下]

      usage 仅作为性能提示提供。指定的使用值不限制数据存储的实际使用模式。

      OpenGL 4.6 core profile specification,第 6.2 节“创建和修改缓冲区对象数据存储”,第 68-69 页)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-05
        • 1970-01-01
        • 1970-01-01
        • 2014-10-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多