很少动画的顶点的 OpenGL VBO 使用提示

Posted

技术标签:

【中文标题】很少动画的顶点的 OpenGL VBO 使用提示【英文标题】:OpenGL VBO usage hints for vertices that animate rarely 【发布时间】:2012-01-13 23:45:07 【问题描述】:

假设我有一个 95% 的时间保持不变的 VBO。但是,另外 5% 的时间是动画。我不确定调用glBufferData 时要给OpenGL 哪个使用提示。

一方面,它在 95% 的情况下都像 GL_STATIC_DRAW 缓冲区。另一方面,GL_STREAM_DRAW 推荐用于动画。我应该妥协并通过GL_DYNAMIC_DRAW吗?

或者我应该将它们组合起来,在动画期间调用glBufferDataGL_STREAM_DRAW,然后在动画完成时用GL_STATIC_DRAW重新缓冲?

【问题讨论】:

【参考方案1】:

唯一可行的答案是尝试一些东西,看看哪种方法最适合不同的平台。 OpenGL 没有定义性能,每个驱动程序都会以不同的方式实现这些东西。提示就是提示;他们不一定会做任何事情。

事实上,AMD 完全无视你的使用提示;它会根据您实际使用缓冲区的方式来执行它的操作。这主要是因为 GL 的太多用户使用不当。

【讨论】:

以上是关于很少动画的顶点的 OpenGL VBO 使用提示的主要内容,如果未能解决你的问题,请参考以下文章

C++ 和 OpenGL,VBO 顶点与骨骼信息交错

如何使用 OpenGL 3.x VBO 渲染动态世界?

使用 VBO 渲染顶点的问题 - OpenGL

OpenGL - 动画是由着色器完成的吗?

将 OpenGL 绘制列表转换为顶点数组或 VBO

初识OpenGL VBO顶点缓冲对象