我需要为Android构建一个图像处理应用程序。性能是主要要求,我正在寻求使用GPU计算。我想知道3种库中哪一种最适合使用。
我知道OpenGL主要用于图形,但也支持计算机着色器。
我不确定Android上对OpenCL的支持程度如何
RenderScript缺少文档,我认为它比其他库要慢。
答案 0 :(得分:1)
对于图像处理应用程序,最重的部分是处理(转换/操作)内存中图像的像素,而不是将图像渲染到屏幕/缓冲区。
当然,这种处理是通用的,需要通用的计算API。
因此,我们可以消除OpenGL ES。它支持着色器,但是OpenGL ES着色语言非常有限,绝对不适合常规处理。
RenderScript,根据this:
RenderScript不使用任何GPU或DSP内核。谷歌故意模糊的文档助长了这种普遍的误解。 RenderScript曾经有一个到OpenGL ES的接口,但是已经过时了,除了动画墙纸之外,RenderScript从未被使用过。如果可用,RenderScript将使用多个CPU内核,但我怀疑RenderScript将被OpenCL取代。
我在一家大型视频游戏公司工作,我们没有使用RenderScript的计划。我们认为Vulkan是更好的选择。我建议您也选择Vulkan,但问题是现在支持Vulkan的Android设备数量很少。
因此,要回答您的问题,请使用OpenCL。尽管OpenCL不属于Android平台,但许多制造商提供驱动程序甚至SDK来支持Android上的OpenCL。至少在支持的设备数量上,它比Vulkan好。