代码之家  ›  专栏  ›  技术社区  ›  Luple

android ndk opengl创建保护上下文

  •  0
  • Luple  · 技术社区  · 5 年前

    我试图在android上使用opengl创建一个受保护的上下文。

    我的代码基于: https://github.com/googlesamples/android-ndk

    以本机活动为基础。

    我已将egl参数更改为:

    EGLint context_attribs[] = {
            EGL_CONTEXT_CLIENT_VERSION, 3,
            0x32C0, EGL_TRUE,
            EGL_NONE,
    };
    EGLint surface_attribs[] = {
            0x32C0, EGL_TRUE,
            EGL_NONE,
    };
    

    大多数设备上的情况似乎都很正常,但也有一些设备出现了奇怪的行为(电话崩溃,或者根本不显示,尽管它们声称支持受保护的上下文)。一个很好的例子是S9高通版运行良好,直到屏幕上出现任何东西(覆盖,导航条向下滑动,或滑动三星侧栏),这将导致手机重新启动。

    在设置受保护的上下文时,我可能遗漏了什么吗?

    根据khronos的文件: https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_protected_content.txt

    0x32c0是受保护内容的正确编号。

    —————————————————————————————————————————————————-

    我交换了0x32c0到egl_protected_content_ext,并检查了扩展,egl_ext_protected_content确实存在。我正在使用的两个设备对此有问题(三星Galaxy S9+高通和三星Galaxy Tab S2)。s2声称它支持受保护的上下文,但是在使用它之后,我得到egl_bad_alloc。在S9上,一切运行良好,没有错误,但设备会持续崩溃后,我使用它一点点。

    0 回复  |  直到 5 年前
        1
  •  2
  •   stonesthrow    5 年前

    为什么使用0x32c0而不是标记名:egl_protected_content_ext?

    您是否询问扩展字符串“egl_ext_protected_content”在支持的扩展中?那应该是你做的第一件事。

    你想做任何不允许的事情吗?可能导致撞车。

    从eglcreatesurface和eglcreatecontext检查错误。egl_bad_属性表示不支持。