感谢 LWJGL(轻量级 Java 游戏库),我可以访问大量静态 OpenGL 类。但是,有人认为我不明白为什么要使用特定版本。在LWJGL 3 wiki 中,他们说:
静态类 GL11, GL12, GL13, GL20, GL21, GL22,... 可用于某个 GL 版本的访问函数,其中 GL11 对应 OpenGL 1.1,GL20 对应 OpenGL 2.0
我知道每个类都是不同版本的 OpenGL,但我经常看到很多教程,根据他们在做什么会使用不同的类,在同一函数中在 GL11、GL13 等之间切换。为了一致性,在任何地方使用相同的类不是更安全吗?当 GL41 可用时,为什么还要继续使用 GL11?因为它是更新的版本,所以不能更快吗?
LWJGL wiki 似乎已经过时。它指出:
注意,只有在特定 OpenGL 版本中添加的函数才属于 GLXX 类(例如,OpenGL 1.2 中的函数在 OpenGL 1.1 中是在 GL11 中,而不是 GL12)
加了重点。这对于 LWJGL 2.x 来说是正确的。这意味着您必须通过访问 1.1 函数GL11,即使就 OpenGL 规范而言,该函数在 4.6 版中可用。
在 LWJGL 3.x 中技术上仍然如此,因为每个GLXX类只定义添加到该特定版本的函数。但是,在 LWJGL 3.x 中,所有版本化类都继承自以前的版本。因此,虽然 1.1 函数仍然在GL11类中定义,但可以从任何更高版本访问它们。