OpenGL 渲染模式

5

到目前为止,我了解的渲染方法有:即时渲染、显示列表、顶点缓存和顶点缓存对象。哪一种是最快的?每种OpenGL版本需要使用哪种渲染方法?我应该使用哪种?


“顶点缓冲和顶点缓冲对象渲染”这两个概念是相同的。此外,这个问题无法被回答;答案会根据硬件、驱动程序版本和工作负载的不同而发生变化。 - Nicol Bolas
2个回答

5
现在最好(也是唯一)的渲染方法是使用通用缓冲区,即顶点缓冲对象。它们从2.1开始就在核心中了,如果我没记错的话,但通常作为扩展出现在1.5版中(作为ARB_vertex_buffer_object)。它们具有硬件支持,这意味着它们可以直接存储在GPU内存中。
当您加载数据时,需要指定建议的用途。您可以在glBufferData手册中阅读更多相关信息。例如,GL_STATIC_DRAW非常类似于静态显示列表。这使您的显卡可以优化对它们的访问。

3

现代(指非古老的)硬件非常不喜欢立即模式。通过使用顶点数组替换立即模式,我看到了近两个数量级的性能提升。

OpenGL 3及以上版本仅支持缓冲区对象,所有其他渲染模式都已被弃用。

显示列表在非古老的硬件上使用起来非常麻烦,不值得这样做。

总结一下:如果您使用的是OpenGL 3+,则必须使用(V)BOs。如果您针对的是OpenGL 2,则使用适当的顶点数组或VBOs。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接