Error: Symbol defined with different precision in vertex and fragment shaders

Error: Symbol defined with different precision in vertex and fragment shaders

我正在使用 LibGDX 开发游戏。在我游戏的一个屏幕上,我只是画了一些圆圈。为此,我使用此 GitHub 存储库中的 Circle java class 来使圆抗锯齿。

https://github.com/Dych/Smooth-circle/blob/master/core/src/gdx/example/Circle.java

它在桌面和 Android 模拟器上工作得很好,但是当我尝试 运行 它在我的 Android phone (Nexus 5) 上时,它只是崩溃并显示以下消息:

com.badlogic.gdx.utils.GdxRuntimeException: --From Vertex Shader:
                                                                    Error: Symbol u_projTrans defined with different precision in vertex and fragment shaders.
                                                                    --From Fragment Shader:
                                                                    Error: Symbol u_projTrans defined with different precision in vertex and fragment shaders.

你能帮我吗? 谢谢。

您的片段着色器使用 #def 来定义精度,无论您的设计是否使用 GL_ES。

但是您的顶点着色器中不存在相同的 #def,因此您的顶点着色器和片段着色器之间的精度可能不同(这就是您的错误原因)。

只需添加您的顶点着色器即可解决此问题。

#ifdef GL_ES
precision mediump float;
#endif