Answers:
首先,我将链接到有关OpenGL版本工作方式的说明。简而言之,OpenGL(通常)是向后兼容的,因此所有GL 3代码在GL 4实现上都可以正常工作。
OpenGL版本的4.x系列代表您可以称为“ Direct3D 11”级硬件的东西。它公开了该硬件的功能。D3D10硬件由OpenGL的3.x版本表示。因此,“转向openGL 4”意味着放弃较低的硬件,或拥有多种渲染途径。
在4.2规范中可以找到3.3和4.2之间的实际功能更改的详细分类。请注意,许多功能(separate_shader_objects,shading_language_420pack,texture_storage)不限于4.x硬件;它们是API的更改,您可以通过扩展程序在3.x硬件上进行访问。
最突出的问题是:GL 4.x允许我做什么,而我却无法使用3.x硬件?
细分可能是最著名的功能。它也可能是最不常用的工具。这并不是说它是无用的。适当使用镶嵌可以增强模型中的细节。但至少对我而言,GL 4并不是最好的选择。
着色器子例程是一个有趣的想法。基本上,这使您可以动态地将着色器的不同片段组合在一起。您可以或多或少地将函数附加到程序中的特定绑定点。该规范有点难以遵循,但是它是很好的功能。
我想说的是,图像加载/存储可能是GL 4功能中最被忽视但功能最强大的部分。有了它,您就可以实现与订单无关的透明性,其性能与OIT差不多。图像加载/存储可能还有许多其他用途,但是聪明的人需要弄清楚它们。
GL 4中有一些零碎的东西。例如双精度支持和间接渲染。这些都是GPGPU风格的东西,因此在游戏中可能用处不大。
但总的来说,GL 4并不会从根本上改变GL 3中实现功能X的方式。