我正在修改OpenGl ES2.0编程指南中2d纹理示例的android版本的版本,以更改片段着色器。这是用纯Java编写的,不使用NDK。
Vanilla 示例在我的手机上可以正常工作,但是当我更改着色器代码时,它不再起作用。这是因为修改后的着色器无法编译(显然),但是由于glGetShaderInfoLog返回空字符串,所以我找不到问题的原因。
我已经对此问题进行了搜索,显然,截至7月22日,这是一个已知问题,但我想知道如何解决该问题。我发现有一篇文章说他们已经为该功能编写了一个NDK包装器,但是对于Android开发来说我是新手,我真的不知道该怎么做。
最佳答案
您正在遭受a bug的折磨。我通过使用old GL ES 2.0 bindings来解决功能glGetShaderInfoLog的问题。像这样:
import com.badlogic.gdx.backends.android.AndroidGL20;
...
AndroidGL20 gl2 = new AndroidGL20();
Log.e(TAG, gl2.glGetShaderInfoLog(shader));
我仍然将标准的GLES20包装器库用于其他所有内容,因此可以轻松地将其放入我的代码库中。两个包装器显然可以共存而没有任何问题。
关于opengl-es - glGetShaderInfoLog返回空字符串(android),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4588800/