错误:在顶点和片段着色器中以不同的精度定义符号

时间:2017-08-08 11:05:17

标签: opengl-es libgdx opengl-es-2.0 opengl-es-3.0

我正在使用LibGDX开发游戏。在我的游戏的一个屏幕中,我只画了一些圆圈。为此,我使用了这个GitHub存储库中的Circle java类,以使圆圈消除锯齿。

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

它在桌面和Android模拟器上运行得很好,但是当我尝试在我的Android手机(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.
你可以帮帮我吗? 谢谢。

1 个答案:

答案 0 :(得分:1)

如果您的设计使用GL_ES,则片段着色器使用#def来定义精度。

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

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

#ifdef GL_ES
precision mediump float;
#endif