OpenGL ES vs Opencl vs Renderscript用于Android图像处理



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

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

我不确定Android上的OpenCL的支持程度

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

对于图像处理应用程序,最重的部分是在存储器中的图像中的图像中的图像中的像素,而不是将图像渲染到屏幕/缓冲区。

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

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

renderscript,据此:

RenderScript不使用任何GPU或DSPS内核。这是Google故意模糊的文档所鼓励的普遍误解。RenderScript曾经有一个接口可以进行OpenGL ES,但已弃用了,并且从未用于动画壁纸之外的很多东西。RenderScript将使用多个CPU内核(如果有(,但我怀疑RenderScript将被Opencl替换。

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

因此,要回答您的问题,请选择OpenCl。尽管OpenCL不是Android平台的一部分,但许多制造商提供了驱动程序甚至SDK,以支持Android上的OpenCL。至少在受支持的设备数量方面,它比Vulkan好。

最新更新