如何通过 C++/NDK 访问 OpenGL ES 2(如果不支持EGL_NATIVE_RENDERABLE)
How to access OpenGL ES 2 via C++/NDK if EGL_NATIVE_RENDERABLE is not supported?
我的应用程序(用Java引导代码用C++编写)在我的Android MID设备上运行良好,但它无法在朋友的Moto MB865手机上运行。在深入研究 GL 上下文创建过程后,我发现EGL_NATIVE_RENDERABLE
对于支持 OpenGL ES 2.0 的所有配置都是GL_FALSE
这意味着我无法使用本机代码访问OpenGL ES 2.0。
为什么系统有这种奇怪的限制?我认为本机代码可以访问在此之前的所有OpenGL配置。
有什么方法可以解决此限制吗?还是我必须编写委托才能通过 JNI 访问 EGL2?
EGL_NATIVE_RENDERABLE
与NDK无关。
它仅指示本机渲染 API 绘制缓冲区的功能。
请参阅 EGL 规范:http://www.khronos.org/registry/egl/specs/eglspec.1.4.pdf第2.2.3 Interaction With Native Rendering
段:
像素图表面将始终支持本机渲染(到 本机渲染 API 可以绘制到本机像素图的范围)。像素地图 在混合本机和客户端 API 时通常使用图面 渲染是可取的,因为不需要在 对客户端 API 和本机 pixmap 可见的后台缓冲区 对本机呈现 API 可见。但是,像素图表面可能,对于 同样的原因,相对具有受限的功能和性能 到窗口和缓冲区图面。不支持本机渲染 通过 pbuffer 表面,因为 pbuffers 的颜色缓冲区是分配的 内部由 EGL 访问,无法通过任何其他方式访问。
问题的原因应该不同(不支持 GLES 2.0 等)。
相关文章:
- 为什么istream不支持右值提取
- 如果不在窗口 10 中声明名为 openCV 的 openCV namedWindow,QT 图像显示将无法正常工作
- 错误:(-210:不支持的格式或格式组合)功能'create'中的硬件视频解码器不支持视频源
- Casablanca/cpprestsdk listener.support接受函数,但不支持方法
- 为什么C++不支持对未初始化变量进行智能分析?
- 在 c++ 中连接字符串和整数,以便在 C++ 11 不支持计算机的情况下读取多个文件
- 在 Ubuntu 18.04 上编译 GLSL 着色器时"不支持 GLSL 3.30"?
- 如果不是多个语句,请使用 if 语句
- 如果不包含 pthread,为什么 GCC 的线程标准库实现会抛出异常?
- 为什么联机C++ IDE 不支持"graphics.h"头文件?
- Clang编译器不支持aarch64-apple-darwin上的-fxray-instrument
- 为什么我的 clang 格式不支持 PPDirectiveIndentStyle 选项?
- CMake 包支持 - 找不到包含和库
- 积极使用的C++环境缺乏对标准库的支持(如果不是全部的话,也是大多数)
- 如果 C++ 中的 DLL 不支持二进制封装,那么何时可以使用它们?
- 元函数计算 x^n 并返回整数限制而不溢出(如果不可能)
- 如何通过 C++/NDK 访问 OpenGL ES 2(如果不支持EGL_NATIVE_RENDERABLE)
- 提升说 boost::log 不支持分叉进程。如果记录器直到分叉后才初始化,情况仍然如此吗?
- coverity8不支持Clang(不是clangcc)
- 如果编译器不支持,可以将可变参数传递给lambda表达式