这个文章是对 Renderscript (渲染脚本)的一个总结,并阐述了它是用来做什么的。Renderscript 是全新加入的一个标志性功能,在官方的 Android 3.0 Honeycomb 展会上没有完全解释清楚。Renderscript 是一个新的 API(应用程序编程接口),它带有高性能的 3D 渲染和计算操作。Renderscript 旨在带来更高的性能的下级 API 给开发者,这可以很大程度的提高他们的应用程序的性能。开发者如果使用这个新的 API 将会更加“逞心如意”的工作,而且他们会得到 3 个工具:非常好用的类似于 CUDA 的计算 API,简单易用的 3D 顶级硬件加速渲染 API,用于在 C99 中使用的更加熟悉的语言。
Renderscript 已经被使用到了一些东西中,比如 Honeycomb 的动态壁纸中以及复杂的 YouTube 和 Book 应用中,我敢肯定你已经看到过或者很快会见到这些新的应用。这个内建的 Renderscript 是非常出色的,就像 Google 说的“接近极端”,它将提高你的设备上执行本地代码的性能。从目前的情况来看这是非常不错的,与现存的 NDK 不同,最终产品将可以跨平台工作。
用于 Renderscript 的开发语言已经编译成了每个设备的中间格式,你在开发之前它就被放置到了应用程序包中,这种语言是 C99 的扩充。不像其它环境,它可以跨平台而且减少了附加因素,当新程序运行时,该脚本将编译为机器代码并可针对运行设备优化。
随着 Renderscript 的到来,简单的脚本将可以使用 GPU 进行运算。而更复杂的脚本也能够安然通过,他们将可以在 GPU 上运行。另外,CPU 将作为 GPU 的备用或其它功能的加速器,这些脚本仍然可以在 CPU 上运行。基本上可以说,以后简单的脚本将比现在可以在更多的地方运行,而现在,CPU 资源成了一个补充,工作将更多的转移到设备中的 GPU 上。
上面的视频是开发者们创建的一个示例,该示例演示了 Renderscript 的强大功能。在视频中,抓拍自一个运行 Android 3.0 Honeycomb 的平板(胡乱猜的,可能是摩托罗拉 Xoom),对 900 个独立的粒子进行了模拟和渲染。这是一个强力的物理模拟,推动了一个球体使其活动了起来,然后这种活动延续到了视频帧中的右侧。这个演示是十分优美的,因为计算脚本自动而且充分利用了设备的两个核心的优点,运行中的每一帧都十分平滑。
Renderscript 的起源可以追述到 Eclair 发布时内置的 3D 动态壁纸应用上。Renderscript 为不断渲染的场景提供了一个新的用于的运行时间的硬件加速,然后开发者使用脚本自定义了一些功能的自制 Dalvik 代码。这些控制代码可以发送命令给一个过程,比如“移动列表”、“跳转页面”等等,这些命令由开发者的脚本决定,所以过程可以完全自定义。
在 Android 3.0 Honeycomb 的创建中,Android 开发者已经将用于 Renderscript 的渲染从 GL ES 1.1 升级到了 2.0。这个更新中添加了一些元素,比如 3D 模型加载,可编程作色器支持以及更有效的分配管理。这个新的编辑器是基于 LLVM 的,并且它胜过了从 Android 2.1 至 2.3 的运行效率。这真的是一个很好的消息对吧?
Renderscript API 和工具现在已经公布了。
不久之后,开发者们可能会在 Android 上给我们提供更多的技术资料,以及更好的示例代码。在此之前,可以感受一下这个开发者创建的人体对称 Android,这是他们的一个内部测试应用。同样的这个应用实现了一个单一的场景图,这个场景图的实现展示了递归的脚本到脚本的调用。两个 Android 机器人直接从一个 A3D 文件(一个设备上用于存储 Renderscript 对象的文件格式)中加载。非常有意思!