android - 用于 Android 图像处理的 OpenGL ES vs OpenCL vs RenderScript

标签 android image-processing gpgpu

我需要为 Android 构建一个图像处理应用程序。性能是主要要求,我希望使用 gpu 计算。我想知道这 3 个库中的哪一个最适合使用。

我知道 OpenGL 主要用于图形,但也支持计算机着色器。

我不确定 OpenCL 在 Android 上的支持情况

RenderScript 缺少文档,我认为它比其他库慢。

最佳答案

对于图像处理应用程序,最重的部分是处理(转换/操作)内存中图像的像素,而不是将图像渲染到屏幕/缓冲区。

当然,这种处理是通用的,需要通用的计算 API。

因此,我们可以消除 OpenGL ES。它支持着色器,但 OpenGL ES 着色语言非常有限,绝对不适合一般处理。

RenderScript,根据 this :

RenderScript does not use any GPU or DSPs cores. That is a common misconception encouraged by Google's deliberately vague documentation. RenderScript used to have an interface to OpenGL ES, but that has been deprecated and has never been used for much beyond animated wallpapers. RenderScript will use multiple CPU cores, if available, but I suspect RenderScript will be replaced by OpenCL.

我在一家大型视频游戏公司工作,我们没有任何使用 RenderScript 的计划。我们认为 Vulkan 是更好的选择。我建议你也选择 Vulkan,但问题是现在支持 Vulkan 的 Android 设备数量非常少。

因此,要回答您的问题,请使用 OpenCL。虽然 OpenCL 不是 Android 平台的一部分,但许多制造商提供了驱动程序甚至 SDK 来支持 Android 上的 OpenCL。至少,它在支持的设备数量上优于 Vulkan。

关于android - 用于 Android 图像处理的 OpenGL ES vs OpenCL vs RenderScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56107600/

相关文章:

android - 让未经身份验证的用户访问 FIrebase 中的数据库的缺点?

matlab - 在Matlab中,如何扫描与实际坐标系旋转45度的二维坐标系中的二值图像?

python - 在python中更改数组的内容

memory-management - 如何处理 Torch 中的 GPU 内存泄漏问题?

memory - 在 OpenCL 中,当工作组大小不是架构的一部分时,__local 内存如何更快?

android - 如何在 Android 中通过 webView 下载文件

android - 无法从 values-v11/themes.xml 引用 Holo 主题

java - fragment 不会显示多个项目

java - 强度切片opencv(与kinect)

javascript - Nodejs GPU.js 使用 GPU 比使用 CPU 慢