📜  Android-RenderScript

📅  最后修改于: 2021-01-05 05:28:35             🧑  作者: Mango


在本章中,我们将学习Android RenderScript。通常,Android上的应用程序旨在消耗尽可能少的资源。但是某些应用程序(例如某些3D游戏)需要在android上进行高级处理。

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

  • 3D渲染
  • 图像处理
  • 计算摄影
  • 计算机视觉

RenderScript如何工作

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

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

如何开始

要使用RenderScript Framework,您必须具有以下两点:

  • RenderScript内核
  • RenderScript API

RenderScript内核

内核是管理数据处理指令并管理中央处理单元上的工作量的程序。内核是操作系统的基本组成部分。

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

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

Sr.No Elements & Description
1

A Language declaration

It declares the version of RenderScript Kernel language used in this script.

2

A package declaration

This declaration names the package name of the Java class which will be affected by this Kernel Code.

3

Invokable functions

You can call these invokable functions from your JAVA code with arbitrary arguments.

4

Script Global Variables

These are just like the variables defined in C and C++ programming language. You can access these variables from your JAVA code.

以下是内核的示例代码-

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 API

如果要在API中使用RenderScript,则可以通过以下两种方式进行操作-

Sr.No APIs & Description
1

android.renderscript

This API is available on devices running Android 3.0 and higher.

2

android.support.v8.renderscript

This API is available on devices running Android 2.2 and higher.

到android支持库需要以下工具-

  • 最新的Android SDK工具版本
  • 最新的Android SDK Build-tools版本

如何使用RenderScript支持库

首先在您的项目中打开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

It specifies the byte code version to be generated.

2

renderscript.support.mode

It specifies a compatible version for the generated byte code to fall back.

3

sdk.buildtools

It Specifies the versions of Android SDK build tools to use.

现在调用您的RenderScript内核函数,并在应用程序中计算复杂的算法。