【问题标题】:What OpenGL version to use in LWJGL?在 LWJGL 中使用什么 OpenGL 版本?
【发布时间】:2019-10-26 14:58:20
【问题描述】:

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

静态类 GL11, GL12, GL13, GL20, GL21, GL22,... 可以用于某个 GL 版本的访问函数,其中 GL11 对应 OpenGL 1.1,GL20 对应 OpenGL 2.0

我知道每个类都是不同版本的 OpenGL,但我经常看到许多教程根据他们所做的工作将使用不同的类,在同一函数中在 GL11、GL13 等之间切换。为了一致性起见,到处使用同一个类不是更安全吗?当 GL41 可用时,为什么还要继续使用 GL11?因为它是更新的版本,难道不能更快吗?

【问题讨论】:

    标签: opengl lwjgl


    【解决方案1】:

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

    注意,只有在特定 OpenGL 版本中添加的函数才属于 GLXX 类(例如,OpenGL 1.2 中的函数在 OpenGL 1.1 中属于 GL11,不是 GL12

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

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

    【讨论】:

    • 那么如果GL11中添加了函数glColor3f(),GL13也有,但它只是指向GL11函数?谢谢!
    • @OscarSjöstedt:不,它不是这么说的。就是说GL13没有。这就是“不是 GL12”所说的。 OpenGL 1.3 版具有该功能,但它不在GL13 类中。
    • 但是这和我目前所拥有的相矛盾:我可以完美使用GL11.glColor3f(),但我也可以在GL12、13、14、15、20、21中使用它...
    • @OscarSjöstedt:我对它进行了更多研究,似乎 LWJGL 的 Wiki 已经过时了。它描述了LWJGL 2.x 的行为。然而,在 LWJGL 3 中,the classes inherit from each other。所以GL12继承自GL11,所以可以访问1.1的函数。
    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多