我正在修改 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/