📅  最后修改于: 2021-01-05 05:28:35             🧑  作者: Mango
在本章中,我们将学习Android RenderScript。通常,Android上的应用程序旨在消耗尽可能少的资源。但是某些应用程序(例如某些3D游戏)需要在android上进行高级处理。
为了向这些应用程序提供高性能,android引入了RenderScript。这是基于android的框架,用于运行执行高度计算任务的应用程序。这个框架的开发是在android提供的Native Development Kit(NDK)中完成的。 RenderScript对于执行以下类型的动作的应用程序非常有用-
RenderScript框架基本上基于数据并行计算。它将您的应用程序工作负载分配到设备上所有可用的处理器上,例如多核CPU或GPU。
工作负载的这种并行分配使程序员摆脱了负载平衡和工作计划的压力。您可以为应用编写更详细,更复杂的算法,而无需担心计算能力。
要使用RenderScript Framework,您必须具有以下两点:
内核是管理数据处理指令并管理中央处理单元上的工作量的程序。内核是操作系统的基本组成部分。
类似地,要运行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;
}
如果要在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支持库需要以下工具-
首先在您的项目中打开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内核函数,并在应用程序中计算复杂的算法。