2

我所说的标志是 GL_STREAM_DRAW、GL_STATIC_DRAW 和 GL_DYNAMIC_DRAW。 手册页清楚地说明了何时应该使用它们,但对于如果使用它们会发生什么则模棱两可

现在在你们都回答得太快之前,让我声明我理解他们应该做什么,并且可以想象一些可能很重要的假设场景。但我怀疑它在实践中是否有很大的不同。最近我一直在想,将标志设置为 GL_DYNAMIC_DRAW 并忘记它会很好,但我心中有一个挥之不去的疑问,如果我这样做,我可能会在脚下开枪。

有没有人更具体地知道这些东西是做什么的?特别是我对 STATIC_DRAW 和 DYNAMIC_DRAW 之间的区别非常好奇。选错一个是帧率死亡陷阱还是只是安慰剂?我想任何真正的答案都将取决于实际的驱动程序实现。或者,如果你能想出一个真实世界的例子,这些标志做某事(真的),那么我有兴趣看到它。

4

1 回答 1

3

使用提示永远不会有任何行为变化。他们所做的最多就是改变各种操作的性能。甚至那时也可能不是。

例如,使用提示被滥用,以至于 AMD 有效地忽略了它们。他们将根据您使用缓冲区的方式移动内存,而不是根据使用提示。NVIDIA 的驱动程序不太愿意妥协。

通常,要知道使用哪种用法提示来获得最佳性能的唯一方法是对其进行分析。您选择哪个提示可以为您提供最佳性能。

于 2012-08-31T21:39:23.480 回答