glBufferData中的提示标志实际上做了什么吗?

时间:2012-08-31 21:05:02

标签: opengl graphics opengl-es

我所谈论的标志是GL_STREAM_DRAW,GL_STATIC_DRAW和GL_DYNAMIC_DRAW。 The manual page is clear about when you should use them but ambiguous about what will happen if you do

现在,在你们回答得太快之前,让我说明我理解他们应该做什么,并且可以想象一些可能很重要的假设情景。但我怀疑它在实践中有很大的不同。最近我一直在想把旗帜设置为GL_DYNAMIC_DRAW并忘记它会很好,但是我心中有一个令人唠叨的疑问,如果我这样做,我可能会在脚下射击。

有没有人真正了解更多具体这些事情的作用?特别是我对STATIC_DRAW和DYNAMIC_DRAW之间的区别感到最好奇。选错了一个帧率死亡陷阱还是只是安慰剂?我想任何真正的答案都是以实际的驱动程序实现为条件的。或者,如果你能想出一个真实世界的例子,这些标志做了什么(真的是什么),那么我有兴趣看到它。

1 个答案:

答案 0 :(得分:3)

使用提示永远不会有任何行为改变。他们将做的最多是改变各种操作的性能。也许即便如此。

例如,the usage hints were so misused that AMD effectively ignores them。它们将根据您使用缓冲区的方式移动内存,而不是基于使用提示。 NVIDIA的驱动程序不太愿意妥协。

通常,了解哪种用法提示用于获得最佳性能的唯一方法是 profile 。您选择哪种提示可以提供最佳性能。

相关问题