我正在尝试在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上,一切运行正常,没有错误,但是使用一小会后,设备将始终对我崩溃。
答案 0 :(得分:1)
为什么要使用0x32C0代替令牌名称:EGL_PROTECTED_CONTENT_EXT?
您是否查询扩展字符串“ EGL_EXT_protected_content”在受支持的扩展中?那应该是你要做的第一件事。
您是否要执行不允许的任何操作?可能会导致崩溃。
从eglCreateSurface和eglCreateContext检查您的错误。 EGL_BAD_ATTRIBUTE表示不支持。