OpenGL渲染模式

时间:2013-01-17 10:52:10

标签: opengl

到目前为止,我知道立即,显示列表,顶点缓冲区和顶点缓冲区对象渲染。哪个是最快的?哪个OpenGL版本都需要?我该怎么用?

3 个答案:

答案 0 :(得分:5)

现在渲染的最佳(并且几乎只有)方法是使用通用缓冲区,即AKA顶点缓冲区对象。它们是2.1的核心,如果我是正确的,但通常在 1.5 (作为ARB_vertex_buffer_object)中作为扩展出现。它们具有硬件支持,这意味着它们可以并且可能直接存储在GPU内存中。

向其加载数据时,请指定建议的用法。您可以在glBufferData手册中阅读更多相关信息。例如,GL_STATIC_DRAW与静态显示列表非常相似。这使您的图形卡可以优化对它们的访问。

答案 1 :(得分:3)

现代(阅读:非古代)硬件真的不喜欢立即模式。通过用顶点数组替换立即模式,我已经看到了近2个数量级的性能提升。

OpenGL 3及更高版本仅支持缓冲区对象,不推荐使用所有其他渲染模式。

正确使用显示列表是一件非常痛苦的事情,在非古代硬件上不值得。

总结一下:如果使用OpenGL 3+,则必须使用(V)BO。如果您以OpenGL 2为目标,请根据需要使用顶点数组或VBO。

答案 2 :(得分:1)

另外,请不要忘记Vertex Array Objects以获得最佳效果。检查this great tutorial Nicol Bolas,然后解释它们。