为什么LWJGL OpenGL中的方法名称相同?

时间:2016-10-11 18:00:02

标签: java opengl lwjgl

我无法通过javadoc快速找到一个非常好的例子,但为什么不同的版本(GL11,GL15,GL30等)有时会采用相同的方法? javadoc还说这些方法"重载"方法(它们可能指的是原始方法)。

EDIT 在这种情况下,重载是无关紧要的。

1 个答案:

答案 0 :(得分:1)

OpenGL有多个版本,每个版本都添加新功能,有些则弃用旧功能。不同的GL类对应于每个版本(GL11 = OpenGL 1.1,GL15 = OpenGL 1.5,GL30 = OpenGL 3.0)。我对LWJGL不是很熟悉,但它可能会为不推荐使用的函数提供编译时警告,并且只支持该版本支持的函数。

https://www.opengl.org/wiki/History_of_OpenGL

修改

要回复评论,一个版本通常不会比另一个版本“更好”,它只是根据您希望程序的最低规格以及用户的机器支持的内容来支持更新的规范。

在研究LWJGL文档时,每个GLXX类都不支持整个API,只支持该版本规范中添加的函数。例如,在{4}}类中添加了glActiveTexture(页面列表“核心版本:1.3”),因此函数及其所有参数都包含在GL13类中。

另一个不同的例子是GL21类中的GL_SRGB常量。 OpenGL 2.1在glTexImageXD函数类中添加了对sRGB纹理的支持,这些函数在GL11 here中定义。

如果您的机器支持OpenGL 2.1+,您可以使用GL_SRGB作为参数。否则该函数会给你一个错误。对于作为较新规范的一部分添加的较新格式,情况也是如此。如果您有OpenGL 4.3支持,则可以使用COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2