android ndk opengl创建受保护的上下文

时间:2019-02-11 22:56:50

标签: android opengl-es android-ndk egl

我正在尝试在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 Qualcomm版本运行良好,直到屏幕上没有出现任何东西(覆盖,导航栏向下滑动或滑动三星侧栏),这将导致电话重启。

在设置受保护的上下文时,我可能会错过一些东西吗?

根据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上,一切运行正常,没有错误,但是使用一小会后,设备将始终对我崩溃。

1 个答案:

答案 0 :(得分:1)

为什么要使用0x32C0代替令牌名称:EGL_PROTECTED_CONTENT_EXT?

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

您是否要执行不允许的任何操作?可能会导致崩溃。

从eglCreateSurface和eglCreateContext检查您的错误。 EGL_BAD_ATTRIBUTE表示不支持。

相关问题