在 LWJGL 中使用什么 OpenGL 版本?

What OpenGL version to use in LWJGL?

感谢 LWJGL(LightWeight Java 游戏库),我可以访问大量静态 OpenGL classes。但是,我不明白为什么要使用特定版本。在 the LWJGL 3 wiki 中,他们说:

The static classes GL11, GL12, GL13, GL20, GL21, GL22,... can be used the access functions of a certain GL Version where GL11 would correspond to OpenGL 1.1, and GL20 would correspond to OpenGL 2.0

我知道每个 class 都是不同版本的 OpenGL,但我经常看到很多教程根据他们在做什么会使用不同的 class,在 GL11、GL13 之间切换等在相同的功能。为了保持一致性,到处使用相同的 class 不是更安全吗?当 GL41 可用时,为什么还要使用 GL11?不能更快吗,因为它是更新的版本?

LWJGL wiki 似乎已过时。它指出:

Note, only functions which were added in a specific OpenGL version are in a GLXX class (eg. functions in OpenGL 1.2 which were in OpenGL 1.1 are in GL11, not GL12)

添加了重点。 LWJGL 2.x 也是如此。这意味着您 必须 通过 GL11 访问 1.1 函数,即使就 OpenGL 规范而言,该函数将在 4.6 版中可用。

在 LWJGL 3.x 中,技术上 仍然是正确的,因为每个 GLXX class 仅定义添加到该特定版本的功能。但是,在 LWJGL 3.x 中,所有版本化 classes 继承 以前的版本。因此,虽然 1.1 函数仍然在 GL11 class 中定义,但它们可以从任何更高版本 访问