Renderscript(渲染脚本)是Android操作系统上的一套API。它基于异构计算思想,专门用于密集型计算。Renderscript提供了三个基本工具:一个硬件无关的通用计算API;一个类似于CUDA、OpenCL和GLSL的计算API;和一个类C99的脚本语言。允许开发者以较少的代码实现功能复杂且性能优越的应用程序。此外Renderscript还可以用于3D图形计算。Android 4.2以后Renderscript添加了脚本内联的功能,编码时可以在脚本中直接调用Blend、Blur以及ScriptGroups等内置函数,而无须重新编写它们的实现。
最近,Google在Android系统中添加另外一套名为Filterscript的API,允许开发者在标准Renderscript运行时API上使用Filterscript完成自己的图像处理操作。不过考虑到脚本在多核CPU、GPU和DSP上的兼容性,使用时这个功能可能会受到很多严格的限制。Filterscript不是Renderscript的替代物而是它子集。Filterscript不适合用于精确度较高的数值计算,但其跨平台能力较强[1]。
特性
- Renderscript始于Android 3.1系统,但通过引入Android Support Library,应用程序可以在不低于Android 2.2的系统上使用它[2]
- 包含了一个专门用于计算的API
- 使用基于C的脚本语言进行编码
可移植性
Renderscript的设计本意是将代码运行各类Android操作系统上,而无须考虑实际硬件环境。因此它的目标在于可移植性,其次才是高性能。
性能
Renderscript专为那些可以被高效分割且被能多个底层硬件并行执行的任务而设计。在Android 4.2以后的系统中,Renderscript不仅可以在CPU上运行,还被扩展到GPU上[3]。
易用性
Renderscript极大地简化了编码流程,大部分的步骤是自动完成的,使用时只须编写核心的业务代码即可。
Renderscript和NDK的使用场景并不一样,对于特定的问题,需要权衡这两者的适用性。
历史
Android 4.1系统以后,Renderscipt中的实验性3D渲染API已被废弃,因此现在它只剩下作为一个用于密集计算的API。
引用