【问题标题】:GLES20.glGetInfoLog() returns "" (android)GLES20.glGetInfoLog() 返回 "" (android)
【发布时间】: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


    【解决方案1】:

    好吧,我在这棵树上叫错了树。这是我的错误: glGetShaderiv 的第二个参数不应该是着色器类型,而是你想要得到的(在本例中为 GLES20.GL_COMPILE_STATUS)。果然,编译正确,我的问题出在别的地方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 2012-07-29
      • 2017-05-13
      • 2016-06-04
      • 1970-01-01
      相关资源
      最近更新 更多