【问题标题】:glGetShaderInfoLog returns empty string (android)glGetShaderInfoLog 返回空字符串(android)
【发布时间】:2011-01-03 22:05:49
【问题描述】:

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

原版示例在我的手机上运行良好,但当我更改着色器代码时,它不再运行。这是因为我修改后的着色器没有编译(显然),但我找不到问题的原因,因为 glGetShaderInfoLog 返回一个空字符串。

我已经对此问题进行了搜索,显然,截至 7 月 22 日,这是一个已知问题,但我想知道有什么方法可以解决它。我发现一篇帖子说他们已经为该函数编写了一个 NDK 包装器,但是作为 Android 开发的新手,我真的不知道该怎么做。

【问题讨论】:

    标签: opengl-es android-2.2-froyo


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      万一有人遇到同样的问题时确实发现了这个问题,我发现“解决它”的唯一方法是使用另一个应用程序(例如 Rendermonkey)编译着色器。不理想,但它让我在我的项目中走得更远!

      【讨论】:

        【解决方案3】:

        我遇到了同样的问题。

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

        2. 在初始化 GLSurfaceView 后调用它

        glSurfaceView.SetEGLContextClientVersion(2);

        【讨论】:

          猜你喜欢
          • 2015-09-04
          • 2015-05-18
          • 2012-09-18
          • 1970-01-01
          • 2020-01-27
          • 2020-07-11
          • 2015-05-25
          • 2011-05-09
          • 1970-01-01
          相关资源
          最近更新 更多