GLES20.glGetInfoLog()返回"" (机器人)

时间:2017-12-13 23:25:01

标签: android logging compilation shader opengl-es-2.0

我(最后)升级了我正在研究openGL ES 2.0的项目。我开始按照Android开发者网站上的教程进行操作,该网站顺利运行。现在,我试图在我现有的应用程序中实现这一点,但它不起作用。我使用glGetShaderiv()来跟踪问题以编译着色器(这与GLES 2.0规范中描述的方式奇怪地不同 - 这是正常的吗?),通过在我的loadShader()方法中添加它: / p>

IntBuffer temp = IntBuffer.allocate(1);
    GLES20.glGetShaderiv(shader, type, temp);
    if(temp.get(0) == 0){
        throw new RuntimeException();
    }

果然,它崩溃了应用程序,因为显然,着色器没有正确编译 - 这很奇怪,因为它是角色的字符与我在教程中使用的相同着色器代码。所以,我试图在上面的代码块之前使用GLES20.glGetShaderInfoLog(着色器)抓取一个日志并使用调试器读取它,但我在字符串中得到的只是""。我读到了这个错误:glGetShaderInfoLog returns empty string (android),但那已经超过5年了,而且我认为现在已经修好了(特别是因为我还没有找到更新的东西)那个话题)......或者我还是在任何机会处理同样的错误?我的手机(Moto g4播放)在Android Marshmallow上运行。

1 个答案:

答案 0 :(得分:0)

好吧,我在这一棵树上咆哮着错误的树。这是我的错: glGetShaderiv的第二个参数不应该是着色器类型,而是你想要得到的东西(在这种情况下是GLES20.GL_COMPILE_STATUS)。果然,它编译正确,我的问题就在其他地方。