glGetShaderInfoLog返回空字符串(android)

时间:2011-01-03 22:05:50

标签: opengl-es android-2.2-froyo

我正在从OpenGl ES2.0编程指南修改2d纹理示例的android版本,以更改片段着色器。这是用纯Java编写的,不使用NDK。

vanilla示例在我的手机上工作正常,但是当我更改着色器代码时,它不再有效。这是因为我的修改后的着色器无法编译(显然),但由于glGetShaderInfoLog返回一个空字符串,因此无法找到问题的原因。

我已经对这个问题进行了搜索,显然,截至7月22日,这是一个众所周知的问题,但我想知道有什么方法可以绕过它。我找到的一篇文章称他们已经为该功能编写了一个NDK包装器,但对于Android开发新手我真的不知道如何做到这一点。

3 个答案:

答案 0 :(得分:6)

你患有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包装器库来处理其他所有内容,因此这很容易放入我的代码库中。这两个包装纸显然可以毫无问题地共存。

答案 1 :(得分:2)

只是因为遇到了同样的问题,任何人都找到了这个问题,我发现“绕过它”的唯一方法是使用另一个应用程序(例如Rendermonkey)编译着色器。不理想,但它在我的项目中让我更进一步!

答案 2 :(得分:1)

我遇到了同样的问题。

  1. 确保ApplicationManufest.xml中包含以下内容:

      

    < uses-feature android:glEsVersion =“0x00020000”android:required =“true”/>

  2. 初始化GLSurfaceView

  3. 后调用此方法
      

    glSurfaceView.SetEGLContextClientVersion(2);