【问题标题】:Android OpenGL-ES VBO support or not?Android OpenGL-ES VBO 支持与否?
【发布时间】:2011-03-15 15:37:43
【问题描述】:

Android OpenGL-ES VBO 支持与否?我该如何检查?

谢谢

【问题讨论】:

    标签: android opengl-es


    【解决方案1】:

    有些手机支持,有些不支持。一般情况下,OpenGL 1.1 中的 VBO 是强制性的,所以如果设备报告了

    gl.glGetString(GL10.GL_VERSION);
    

    作为 1.1 或更高版本(您也可以编写应用清单文件,以便安装需要 1.1)然后支持它们。

    如果设备只支持OpenGL ES 1.0,你应该检查返回值

    gl.glGetString(GL10.GL_EXTENSIONS);
    

    是否包含ARB_vertex_buffer_object。应该会吧。

    关于 Android 设备的各种 GL 功能的(略微)相关信息,您可以在以下问题中找到一些信息:OpenGL extensions available on different Android devices。

    【讨论】:

    • 您也可以编写应用清单文件,以便安装需要 1.1 -> 我该怎么做?:)
    • 你应该使用 用于 1.1 或 用于 2.0(低端设备不支持,但具有更灵活的管道)。
    【解决方案2】:
    void draw(GL10 gl){
        GL11 gl11 = (GL11)gl;
        ...
        gl11.glBindBuffer(...);
    }
    

    【讨论】:

      【解决方案3】:

      OpenGL ES 2.0 很好地支持 VBO,但在 Android 2.2 中存在一个问题,它缺少 GLES20 类中的 api:

      public static native void glDrawElements(
          int mode,
          int count,
          int type,
          int offset
      );
      

      该问题已从 Android 2.3 开始修复。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-12
        • 2012-03-15
        • 2014-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多