LibGdx 我应该使用 gl30 吗?

Joz*_*100 5 java libgdx

在 libgdx 的配置中,有一个 useGL30 布尔值。由于我从未使用过 OpenGL,因此我不确定该方法的作用。顺便说一句。我应该将其设置为 false 还是 true?哪个更适合我的游戏?

Xop*_*ppa 6

另一个答案非常广泛,但不幸的是在某些部分不正确。首先回答你的问题:

无论平台(桌面还是安卓),您都希望将config.useGL30成员设置为false

你应该设置config.useGL30成员true,除非你有一个实际需要使用的OpenGL ES 3.0的功能。在这种情况下(如果您需要使用 GLES3 功能),您将需要注意兼容性,即使在不需要该功能的地方也是如此。

简单设置config.useGL30true不会为你的游戏更好。事实上,它可能会引入问题。

澄清几点:

OpenGL并且OpenGL ES是两个不同的东西,版本无法比较。如果您真的要比较版本,那么 OpenGL ES 2.0 可以与 OpenGL 4.3(是其子集)进行比较,OpenGL ES 3.0 可以与 OpenGL 4.5(是其子集)进行比较。

在这方面的命名useGL30Gdx.gl20Gdx.gl30可以被认为是误导,因为2030在命名实际上指的是OpenGLES版本,并没有对OpenGL的版本。更好的命名可能是useGLES30,Gdx.gles20Gdx.gles30

OpenGL ES 3.0并不完全向后兼容 OpenGL ES 2.0,桌面也是如此(通过 OpenGL 模拟 OpenGL ES)。尽管 API 本身是兼容的,但使用的着色器语言并非如此。因此,如果您设置config.useGL30为,true那么您的着色器将不再像您期望的那样工作的可能性很大。这包括 libgdx 附带的着色器(SpriteBatch、ShapeRenderer、ModelBatch 等)。

因此,useGL30仅在桌面项目中将成员设置为 true 是没有意义的,尤其是在您不对代码进行其他调整的情况下。