Android 简明教程

Android - RenderScript

本章内容将介绍 Android RenderScript。通常情况下,Android 应用程序的设计旨在消耗尽可能少的资源。但是,某些应用程序(如一些 3D 游戏)需要在 Android 上执行高级处理。

为了向这些应用程序提供高性能,Android 引入了 RenderScript。它是一个基于 Android 的框架,用于运行执行非常高计算任务的应用程序。该框架上的开发是在 Android 提供的 Native Development Kit(NDK) 中完成的。RenderScript 对于执行以下类型操作的应用程序非常有用 -

  1. 3D Rendering

  2. Image Processing

  3. Computational Photography

  4. Computer Vision

How RenderScript Works

RenderScript 框架基本上基于数据并行计算。它将您的应用程序工作负载分布到设备上可用的所有处理器上,例如多核 CPU 或 GPU。

这种并行工作负载分布使程序员摆脱了负载平衡和工作调度的紧张感。您可以为您的应用程序编写更详细、更复杂的算法,而无需担心计算能力。

How to Begin

要使用 RenderScript 框架,您必须具备以下两项 -

  1. A RenderScript Kernel

  2. RenderScript APIs

A RenderScript Kernel

内核是一个管理数据处理指令并管理中央处理器单元上工作负载的程序。内核是操作系统的一个基本部分。

类似地,为运行 RenderScript 框架,我们需要一个名为 Kernel 的书面脚本,以管理来自我们的应用程序的所有数据处理请求并利用 NDK 提供的 Android 操作系统更多功能,并且如上所述,RenderScript 的开发是在 Android 的 Native Development Kit 中完成的。

内核脚本使用 C 语言的 C-99 标准编写。此标准早于 C++ 的开发。RenderScript 内核脚本文件通常放置在 .rs 文件中。每个文件都称为脚本。RenderScript 内核脚本可以包含以下元素 -

Sr.No

Elements & Description

1

A Language declaration 它声明脚本中使用的 RenderScript 内核语言的版本。

2

A package declaration 此声明命名了受此内核代码影响的 Java 类的包名称。

3

Invokable functions 您可以使用任意参数从 Java 代码中调用这些可调用函数。

4

Script Global Variables 这些就像 C 和 C++ 编程语言中定义的变量。您可以从 Java 代码访问这些变量。

以下是内核的示例代码 -

uchar4 __convert__((kernel)) invert(uchar4 in, uint32_t x, uint32_t y) {
   uchar4 out = in;
   out.r = 255 - in.r;
   out.g = 255 - in.g;
   return out;
}

RenderScript APIs

如果您想在您的 API 中使用 RenderScript,可以通过以下两种方式进行 -

Sr.No

APIs & Description

1

android.renderscript 此 API 可用于运行 Android 3.0 及更高版本的设备。

2

android.support.v8.renderscript 此 API 可用于运行 Android 2.2 及更高版本的设备。

对于 Android 支持库,需要以下工具 -

  1. 最新的Android SDK Tools版本

  2. 最新的Android SDK Build-tools版本

How to use RenderScript Support Library

首先打开项目中的 project.properties 文件,并在文件中添加以下行-

renderscript.target=18
renderscript.support.mode=true
sdk.buildtools=18.1.0

现在打开使用RenderScript的主类,并添加对支持库类的导入,如下所示-

import android.support.v8.renderscript.*;

以下是我们在 project.properties 文件中添加的上述属性的目的。

Sr.No

Project properties & Description

1

renderscript.target 它指定要生成的字节码版本。

2

renderscript.support.mode 它为生成的字节码指定了一个兼容版本以进行回退。

3

sdk.buildtools 它指定要使用的Android SDK Build Tools的版本。

现在调用RenderScript Kernel函数,并在应用程序中计算复杂算法。