Android OpenGL ES 2.0 与3.0兼容方案

本文介绍了如何检查Android设备是否支持OpenGL ES 3.0,包括EGL版本检查和查询Client版本号。当设备不支持GLES3.0时,提出了打桩技术和动态库加载的解决方案,以确保在GLES 2.0库中也能使用GLES 3.0的功能。
摘要由CSDN通过智能技术生成

1. 检查系统是否支持GLES3.0

检查系统支持的OpenGL版本的方法有一下几种方法:

  1. 查看EGL版本, 1.4以上
  2. EGL 查询Client版本号
  3. GL_VERSION
  4. GL_SHADING_LANGUAGE_VERSION

1.1 EGL版本检查

此方法适用于创建EGLContext阶段。
要支持GLES3.0 要求EGL版本在1.4以上。
EGL初始化的时候会返回EGL的版本信息,根据此版本选择合适的GLES版本号,具体代码如下:

    if (!eglInitialize(m_display, &major, &minor)) {
        return XR_EGL_BAD_DISPLAY;
    }

    LOGI("eglInitialize: major: %d, minor: %d", major, minor);
    if (minor >= 4 && s_nGLVersion >= 3) {
        nGLRenderType = EGL_OPENGL_ES3_BIT_KHR;
    } else {
        nGLRenderType = EGL_OPENGL_ES2_BIT;
        s_nGLVersion = 2;
    }

    ...

    EGLint attribList[]{
            EGL_CONTEXT_CLIENT_VERSION, s_nGLVersion,
            EGL_NONE
    };
    m_context = eglCreateContext(m_display, config, sharedContext, attribList);

1.2 EGL 查询Client版本号

    int clientVersion;
    eglQueryContext(m_display, m_context, EGL_CONTEXT_CLIENT_VERSION, &clientVersi
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值