【发布时间】:2018-05-27 23:15:41
【问题描述】:
我(终于)将我正在开发的项目升级到 openGL ES 2.0。我从遵循 Android 开发者网站上的教程开始,该教程运行顺利。现在,我试图在我现有的应用程序中实现这一点,但它不起作用。我通过在我的 loadShader() 方法中添加以下内容,找到了使用 glGetShaderiv() 编译着色器的问题(这与 GLES 2.0 规范中描述的方式完全不同——这正常吗?):
IntBuffer temp = IntBuffer.allocate(1);
GLES20.glGetShaderiv(shader, type, temp);
if(temp.get(0) == 0){
throw new RuntimeException();
}
果然,它使应用程序崩溃,因为很明显,着色器没有正确编译——这很奇怪,因为我在教程中使用的着色器代码是逐个字符的。因此,我尝试在上述代码块之前使用 GLES20.glGetShaderInfoLog(shader) 获取日志并使用调试器将其读取,但我在字符串中得到的只是“”。我读到了这个错误:glGetShaderInfoLog returns empty string (android),但那已经超过 5 年了,我认为它现在已经修复(特别是因为我还没有找到关于该主题的任何更新)......或者我仍然是,通过任何机会,处理同样的错误?我的手机(Moto g4 play)在 Android Marshmallow 上运行。
【问题讨论】:
标签: android logging compilation shader opengl-es-2.0