我试图在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上,一切运行正常,没有错误,但是在使用它之后设备会一直崩溃。
为什么使用0x32C0而不是令牌名称:EGL_PROTECTED_CONTENT_EXT?
您是否在查询扩展字符串“EGL_EXT_protected_content”是否在受支持的扩展名中?这应该是你做的第一件事。
您是否尝试执行任何不允许的操作?可能导致崩溃。
检查来自eglCreateSurface和eglCreateContext的错误。 EGL_BAD_ATTRIBUTE表示不支持。