假设我的VBO在95%的时间内保持不变。但是,另外5%的时间,它是动画。在调用glBufferData
时,我不确定向OpenGL提供哪些用法提示。
一方面,它在95%的时间里都像GL_STATIC_DRAW
缓冲区。另一方面,建议将GL_STREAM_DRAW
用于动画。我应该妥协并通过GL_DYNAMIC_DRAW
吗?
或者我应该将它们合并,并在动画期间使用glBufferData
调用GL_STREAM_DRAW
,然后在动画完成时使用GL_STATIC_DRAW
重新缓冲?
答案 0 :(得分:4)
唯一可行的答案是尝试一些东西,看看什么最适合不同的平台。 OpenGL没有定义性能,每个驱动程序都会以不同的方式实现这些类型。提示是提示;他们不一定做任何事情。
事实上,AMD完全忽略了你的使用提示;它根据你实际使用缓冲区的方式做它做的事情。这主要是因为GL的太多用户使用它们非常糟糕。