现在渲染的最佳(并且几乎只有)方法是使用通用缓冲区,即AKA顶点缓冲区对象.它们是2.1的核心,如果我是正确的,但通常在1.5(as ARB_vertex_buffer_object)中作为扩展出现.它们具有硬件支持,这意味着它们可以并且可能直接存储在GPU内存中.
向其加载数据时,请指定建议的用法.您可以在glBufferData手册中阅读更多相关信息.例如,GL_STATIC_DRAW与静态显示列表非常相似.这使您的图形卡可以优化对它们的访问.
现代(阅读:非古代)硬件确实不喜欢立即模式。通过用顶点数组替换立即模式,我发现性能提高了近 2 个数量级。
OpenGL 3 及更高版本仅支持缓冲区对象,所有其他渲染模式均已弃用。
正确使用显示列表是一件非常痛苦的事情,而且在非古老的硬件上不值得。
总结一下:如果你使用 OpenGL 3+,你就必须使用 (V)BO。如果您的目标是 OpenGL 2,请根据需要使用顶点数组或 VBO。