【问题标题】:android ndk opengl creating protected contextandroid ndk opengl 创建受保护的上下文
【发布时间】:2019-02-11 22:56:49
【问题描述】:

我正在尝试在 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 上,一切运行良好,没有错误,但设备在使用一段时间后会一直在我身上崩溃。

【问题讨论】:

    标签: android opengl-es android-ndk egl


    【解决方案1】:

    你为什么使用 0x32C0 而不是令牌名称:EGL_PROTECTED_CONTENT_EXT?

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

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

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

    【讨论】:

    • 感谢您抽出宝贵时间回复。我会用信息更新我的问题
    • 三星通过将操作系统从 android 8 升级到 android 9 解决了这个问题。但是这在其他设备上仍然是一个问题。看起来这是三星 qualcomm 实现的问题。
    猜你喜欢
    • 2013-05-26
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多