请记住,仍然支持老式 OpenGL。您不必使用现代 OpenGL,如果您正在做一些相对不复杂或非特定的事情,您完全可以使用固定功能管道。如果您想开始进行高级照明或类似的事情,那么现代 OpenGL 就派上用场了。
老实说,我有点喜欢老式的 OpenGL,它更容易,而且你可以更快地在屏幕上显示内容。现代 OpenGL 令人难以置信,但它的代价是变得更加复杂,您需要大量代码并且在开始有效使用它之前必须了解很多。
自从您询问以来,主要区别在于能够自定义着色器的工作方式。着色器是在 GPU 上运行的程序。过去,这些着色器是预先编程的,因此您几乎无法控制希望它们如何工作,因此您在 OpenGL 中可以做的事情受到限制(它完成了工作,它只是更通用,因此更少强大的)。因此,使用现代 OpenGL,您可以自定义希望着色器工作的方式,例如,有一种称为顶点着色器的东西,它是一种处理推送到 GPU 的点并计算出这些点的位置的着色器。在现代 OpenGL 中,您可以使用称为 GLSL 的东西来自定义这些着色器的工作方式
GLSL 是一种 C 风格的半汇编语言,被推送到 GPU,这是旧版和现代 OpenGL 之间的主要区别。
至于要买一本书,你将不得不为 2.x 买一本 2.0 的书,它甚至与新的 OpenGL 不在同一个球场。有一些通用概念可以转移到现代 OpenGL,但在大多数情况下它是完全不同的。我以 5 美元的价格订购了 Andre Lamothe 的 OpenGL 游戏编程?这是对 2.1 的非常好的介绍,并且代码是用 Win32 编写的,而且由于 Windows API 几乎没有改变,几乎所有代码(如果不是全部的话)的工作方式都是一样的,即使这本书已经有 12 年的历史了(去展示它写得有多好)并且它实际上有非常有趣的项目(动画机器人,前几个旋转立方体)。无论如何,祝你好运。这是一条艰难而漫长的道路,但它是如此有益。