我知道 OpenGL 4 和 3 非常相似,尤其是 3.1 和 4.1。由于两者基本上是一起发布的,因此很难理解 OpenGL 4.0/4.1 的基本原理。
在以前的 OpenGL 版本中,次要版本会向上递增,直到大量更改累积到新的主要版本中。OpenGL 3.x 和 4.x 引入了向后不兼容的 API 更改,然后 OpenGL 3.2 和 3.3 被称为 3 系列的特定分支,它们不向前兼容,而 3.1 与 4.1+ 兼容
与 OpenGL 3.1 相比,OpenGL 4.1 提供了哪些关键差异,从而保证它被归类为新的主要版本?
奖励:是否有任何差异在 GL3 或仅可访问性的任何情况下提供了性能提升?
编辑:基于答案的一些额外发现
OpenGL 3.3 是对 OpenGL 4.0 的补充,将尽可能多的功能整合到旧硬件中。在 OpenGL 3 和 4 之间进行选择,有时3.3 可能是更好的选择。然而,4.1 增加了 GL ES 2.0 兼容性和一些不错的功能。
更大的工作流程差异之一是通过新的曲面细分着色器在管道中添加 GPU 编程步骤。另一个是要渲染到的多个视口。我相信新的详细程度功能会改变我正在使用的工作流程,也许还会改变其他很多,尽管我没有深入研究过这个功能。
如果您发现任何误解或需要改进的地方,请告诉我。
主题演讲(显然在询问元数据时从答案中删除了。用于临时参考实际答案是什么。)
附录 G - K对于OpenGL 3.1功能到OpenGL 4.1 功能
Khronos Group 发布的 OpenGL 4.0可能“更容易阅读”:)
- 采样器对象
- 实例化数组和着色器
texture_cube_map_array 和 texture_gather
GLSL 4.0和动态 LOD
- shader_subroutine和sample_shading
- 分离着色器对象
- 增加纹理/渲染缓冲区所需的大小
- 64位浮点顶点属性
- get_program_binary
- +2镶嵌着色器