概览
RenderScript 是一种高性能运行时,可在原生级别提供计算操作。RenderScript 代码在运行时在设备上编译,以实现平台独立性。
本参考文档介绍了 RenderScript 运行时 API,您可以使用这些 API 用 C99 编写 RenderScript 代码。RenderScript 计算头文件会自动为您包含。
要使用 RenderScript,您需要利用此处记录的 RenderScript 运行时 API 以及 RenderScript 的 Android 框架 API。有关 Android 框架 API 的文档,请参阅 android.renderscript 软件包参考。
有关如何使用 RenderScript 进行开发以及运行时和 Android 框架 API 如何交互的更多信息,请参阅 RenderScript 开发者指南和 RenderScript 示例。
数值类型
标量
RenderScript 支持以下标量数值类型
| 8 位 | 16 位 | 32 位 | 64 位 | |
| 整数 | char, int8_t | short, int16_t | int32_t | long, long long, int64_t |
| 无符号整数 | uchar, uint8_t | ushort, uint16_t | uint, uint32_t | ulong, uint64_t |
| 浮点数 | half | float | double |
向量
RenderScript 支持长度为 2、3 和 4 的固定大小向量。向量使用通用类型名称后跟 2、3 或 4 来声明。例如,float4、int3、double2、ulong4。
要创建向量字面量,请使用向量类型后跟花括号括起来的值,例如 (float3){1.0f, 2.0f, 3.0f}。
向量的条目可以使用不同的命名样式访问。
可以通过在变量名后跟一个点和以下内容来访问单个条目
- 字母 x、y、z 和 w,
- 字母 r、g、b 和 a,
- 字母 s 或 S,后跟一个从零开始的索引。
例如,对于 int4 myVar;,以下是等效的:
myVar.x == myVar.r == myVar.s0 == myVar.S0
myVar.y == myVar.g == myVar.s1 == myVar.S1
myVar.z == myVar.b == myVar.s2 == myVar.S2
myVar.w == myVar.a == myVar.s3 == myVar.S3
可以使用多个字母或索引连接组成的标识符一次性访问向量的多个条目。结果向量的大小等于指定的条目数量。
在上面的示例中,可以使用 myVar.yz、myVar.gb、myVar.s12 和 myVar.S12 访问中间的两个条目。
条目不必是连续的或按递增顺序排列。条目甚至可以重复,只要我们不是试图对其进行赋值。您也不能混合命名样式。
以下是可以或不可以进行的示例:
float4 v4;
float3 v3;
float2 v2;
v2 = v4.xx; // Valid
v3 = v4.zxw; // Valid
v3 = v4.bba; // Valid
v3 = v4.s032; // Valid
v3.s120 = v4.S233; // Valid
v4.yz = v3.rg; // Valid
v4.yzx = v3.rg; // Invalid: mismatched sizes
v4.yzz = v3; // Invalid: z appears twice in an assignment
v3 = v3.xas0; // Invalid: can't mix xyzw with rgba nor s0...
v3 = v4.s034; // Invalid: the digit can only be 0, 1, 2, or 3
矩阵和四元数
RenderScript 支持固定大小的浮点方阵,尺寸为 2x2、3x3 和 4x4。类型命名为 rs_matrix2x2、rs_matrix3x3 和 rs_matrix4x4。操作列表请参阅矩阵函数。
四元数也通过 rs_quaternion 得到支持。操作列表请参阅四元数函数。
| 类型 | |
|---|---|
| char2 | 两个 8 位有符号整数 |
| char3 | 三个 8 位有符号整数 |
| char4 | 四个 8 位有符号整数 |
| double2 | 两个 64 位浮点数 |
| double3 | 三个 64 位浮点数 |
| double4 | 四个 64 位浮点数 |
| float2 | 两个 32 位浮点数 |
| float3 | 三个 32 位浮点数 |
| float4 | 四个 32 位浮点数 |
| half | 16 位浮点值 |
| half2 | 两个 16 位浮点数 |
| half3 | 三个 16 位浮点数 |
| half4 | 四个 16 位浮点数 |
| int16_t | 16 位有符号整数 |
| int2 | 两个 32 位有符号整数 |
| int3 | 三个 32 位有符号整数 |
| int32_t | 32 位有符号整数 |
| int4 | 四个 32 位有符号整数 |
| int64_t | 64 位有符号整数 |
| int8_t | 8 位有符号整数 |
| long2 | 两个 64 位有符号整数 |
| long3 | 三个 64 位有符号整数 |
| long4 | 四个 64 位有符号整数 |
| rs_matrix2x2 | 2x2 32 位浮点矩阵 |
| rs_matrix3x3 | 3x3 32 位浮点矩阵 |
| rs_matrix4x4 | 4x4 32 位浮点矩阵 |
| rs_quaternion | 四元数 |
| short2 | 两个 16 位有符号整数 |
| short3 | 三个 16 位有符号整数 |
| short4 | 四个 16 位有符号整数 |
| size_t | 无符号大小类型 |
| ssize_t | 有符号大小类型 |
| uchar | 8 位无符号整数 |
| uchar2 | 两个 8 位无符号整数 |
| uchar3 | 三个 8 位无符号整数 |
| uchar4 | 四个 8 位无符号整数 |
| uint | 32 位无符号整数 |
| uint16_t | 16 位无符号整数 |
| uint2 | 两个 32 位无符号整数 |
| uint3 | 三个 32 位无符号整数 |
| uint32_t | 32 位无符号整数 |
| uint4 | 四个 32 位无符号整数 |
| uint64_t | 64 位无符号整数 |
| uint8_t | 8 位无符号整数 |
| ulong | 64 位无符号整数 |
| ulong2 | 两个 64 位无符号整数 |
| ulong3 | 三个 64 位无符号整数 |
| ulong4 | 四个 64 位无符号整数 |
| ushort | 16 位无符号整数 |
| ushort2 | 两个 16 位无符号整数 |
| ushort3 | 三个 16 位无符号整数 |
| ushort4 | 四个 16 位无符号整数 |
对象类型
以下类型用于操作 RenderScript 对象,例如 allocations、samplers、elements 和 scripts。这些对象大多数是使用 Java RenderScript API 创建的。
| 类型 | |
|---|---|
| rs_allocation | allocation 的句柄 |
| rs_allocation_cubemap_face | 用于选择立方体贴图面的枚举 |
| rs_allocation_usage_type | 指定 allocation 使用方式的位字段 |
| rs_data_kind | Element 数据种类 |
| rs_data_type | Element 基本数据类型 |
| rs_element | element 的句柄 |
| rs_sampler | Sampler 的句柄 |
| rs_sampler_value | Sampler Wrap T 值 |
| rs_script | Script 的句柄 |
| rs_type | Type 的句柄 |
| rs_yuv_format | YUV 格式 |
转换函数
以下函数将数值向量类型转换为另一种类型,或将一种颜色表示转换为另一种颜色表示。
| 函数 | |
|---|---|
| convert | 转换数值向量 |
| rsPackColorTo8888 | 从浮点数创建 uchar4 RGBA |
| rsUnpackColor8888 | 从 uchar4 创建 float4 RGBA |
| rsYuvToRGBA | 将 YUV 值转换为 RGBA |
数学常量和函数
以下数学函数可以应用于标量和向量。当应用于向量时,返回值是将该函数应用于输入的每个条目所得到的向量。
例如:
float3 a, b;
// The following call sets
// a.x to sin(b.x),
// a.y to sin(b.y), and
// a.z to sin(b.z).
a = sin(b);
有关将输入解释为 n 维空间中单个向量的函数(例如 distance() 和 length()),请参阅向量数学函数。
对 32 位浮点数进行数学运算的精度受 pragma rs_fp_relaxed 和 rs_fp_full 的影响。在 rs_fp_relaxed 下,次正规值可能会被刷新为零,并且舍入可能会朝零方向进行。相比之下,rs_fp_full 要求正确处理次正规值,即小于 1.17549435e-38f 的值。rs_fp_rull 还要求四舍五入到最近偶数。
使用常见数学函数的变体可以实现不同的精度/速度权衡。名称以以下开头的函数
- native_: 可能具有精度较低的自定义硬件实现。此外,次正规值可能会被刷新为零,可以使用向零舍入,并且可能无法正确处理 NaN 和无穷大输入。
- half_: 可能会使用 16 位浮点数执行内部计算。此外,次正规值可能会被刷新为零,并且可以使用向零舍入。
| 常量 | |
|---|---|
| M_1_PI | 1 / pi,作为一个 32 位浮点数 |
| M_2_PI | 2 / pi,作为一个 32 位浮点数 |
| M_2_SQRTPI | 2 / sqrt(pi),作为一个 32 位浮点数 |
| M_E | e,作为一个 32 位浮点数 |
| M_LN10 | log_e(10),作为一个 32 位浮点数 |
| M_LN2 | log_e(2),作为一个 32 位浮点数 |
| M_LOG10E | log_10(e),作为一个 32 位浮点数 |
| M_LOG2E | log_2(e),作为一个 32 位浮点数 |
| M_PI | pi,作为一个 32 位浮点数 |
| M_PI_2 | pi / 2,作为一个 32 位浮点数 |
| M_PI_4 | pi / 4,作为一个 32 位浮点数 |
| M_SQRT1_2 | 1 / sqrt(2),作为一个 32 位浮点数 |
| M_SQRT2 | sqrt(2),作为一个 32 位浮点数 |
| 函数 | |
|---|---|
| abs | 整数的绝对值 |
| acos | 反余弦 |
| acosh | 反双曲余弦 |
| acospi | 反余弦除以 pi |
| asin | 反正弦 |
| asinh | 反双曲正弦 |
| asinpi | 反正弦除以 pi |
| atan | 反正切 |
| atan2 | 比值的反正切 |
| atan2pi | 比值的反正切,除以 pi |
| atanh | 反双曲正切 |
| atanpi | 反正切除以 pi |
| cbrt | 立方根 |
| ceil | 不小于某个值的最小整数 |
| clamp | 将值限制在某个范围内 |
| clz | 前导 0 位数 |
| copysign | 将一个数的符号复制到另一个数 |
| cos | 余弦 |
| cosh | 双曲余弦 |
| cospi | 一个数乘以 pi 的余弦 |
| degrees | 将弧度转换为角度 |
| erf | 数学误差函数 |
| erfc | 数学余误差函数 |
| exp | e 的一个数次方 |
| exp10 | 10 的一个数次方 |
| exp2 | 2 的一个数次方 |
| expm1 | e 的一个数次方减一 |
| fabs | 浮点数的绝对值 |
| fdim | 两个值的正差 |
| floor | 不大于某个值的最小整数 |
| fma | 乘加 |
| fmax | 两个浮点数的最大值 |
| fmin | 两个浮点数的最小值 |
| fmod | 取模 |
| fract | 正小数部分 |
| frexp | 二进制尾数和指数 |
| half_recip | 以 16 位精度计算的倒数 |
| half_rsqrt | 以 16 位精度计算的平方根的倒数 |
| half_sqrt | 以 16 位精度计算的平方根 |
| hypot | 斜边 |
| ilogb | 以 2 为底的指数 |
| ldexp | 从尾数和指数创建浮点数 |
| lgamma | 伽马函数的自然对数 |
| log | 自然对数 |
| log10 | 以 10 为底的对数 |
| log1p | 值加 1 的自然对数 |
| log2 | 以 2 为底的对数 |
| logb | 以 2 为底的指数 |
| mad | 乘加 |
| max | 最大值 |
| min | 最小值 |
| mix | 混合两个值 |
| modf | 整数和小数部分 |
| nan | 非数字 |
| nan_half | 非数字 |
| native_acos | 近似反余弦 |
| native_acosh | 近似反双曲余弦 |
| native_acospi | 近似反余弦除以 pi |
| native_asin | 近似反正弦 |
| native_asinh | 近似反双曲正弦 |
| native_asinpi | 近似反正弦除以 pi |
| native_atan | 近似反正切 |
| native_atan2 | 近似比值的反正切 |
| native_atan2pi | 近似比值的反正切,除以 pi |
| native_atanh | 近似反双曲正切 |
| native_atanpi | 近似反正切除以 pi |
| native_cbrt | 近似立方根 |
| native_cos | 近似余弦 |
| native_cosh | 近似双曲余弦 |
| native_cospi | 近似一个数乘以 pi 的余弦 |
| native_divide | 近似除法 |
| native_exp | 近似 e 的一个数次方 |
| native_exp10 | 近似 10 的一个数次方 |
| native_exp2 | 近似 2 的一个数次方 |
| native_expm1 | 近似 e 的一个数次方减一 |
| native_hypot | 近似斜边 |
| native_log | 近似自然对数 |
| native_log10 | 近似以 10 为底的对数 |
| native_log1p | 近似值加 1 的自然对数 |
| native_log2 | 近似以 2 为底的对数 |
| native_powr | 近似正底数的指数幂 |
| native_recip | 近似倒数 |
| native_rootn | 近似 n 次方根 |
| native_rsqrt | 近似平方根的倒数 |
| native_sin | 近似正弦 |
| native_sincos | 近似正弦和余弦 |
| native_sinh | 近似双曲正弦 |
| native_sinpi | 近似一个数乘以 pi 的正弦 |
| native_sqrt | 近似平方根 |
| native_tan | 近似正切 |
| native_tanh | 近似双曲正切 |
| native_tanpi | 近似一个数乘以 pi 的正切 |
| nextafter | 下一个浮点数 |
| pow | 底数的指数幂 |
| pown | 底数的整数指数幂 |
| powr | 正底数的指数幂 |
| radians | 将角度转换为弧度 |
| remainder | 除法的余数 |
| remquo | 除法的余数和商 |
| rint | 舍入到偶数 |
| rootn | N 次方根 |
| round | 远离零点舍入 |
| rsRand | 伪随机数 |
| rsqrt | 平方根的倒数 |
| sign | 值的符号 |
| sin | 正弦 |
| sincos | 正弦和余弦 |
| sinh | 双曲正弦 |
| sinpi | 一个数乘以 pi 的正弦 |
| sqrt | 平方根 |
| step | 如果小于某个值则为 0,否则为 1 |
| tan | 正切 |
| tanh | 双曲正切 |
| tanpi | 一个数乘以 pi 的正切 |
| tgamma | 伽马函数 |
| trunc | 截断浮点数 |
向量数学函数
这些函数将输入参数解释为 n 维空间中向量的表示。
对 32 位浮点数进行数学运算的精度受 pragma rs_fp_relaxed 和 rs_fp_full 的影响。详情请参阅数学常量和函数。
使用常见数学函数的变体可以实现不同的精度/速度权衡。名称以以下开头的函数
- native_: 可能具有精度较低的自定义硬件实现。此外,次正规值可能会被刷新为零,可以使用向零舍入,并且可能无法正确处理 NaN 和无穷大输入。
- fast_: 可能会使用 16 位浮点数执行内部计算。此外,次正规值可能会被刷新为零,并且可以使用向零舍入。
| 函数 | |
|---|---|
| cross | 两个向量的叉积 |
| distance | 两点之间的距离 |
| dot | 两个向量的点积 |
| fast_distance | 两点之间的近似距离 |
| fast_length | 向量的近似长度 |
| fast_normalize | 近似归一化向量 |
| length | 向量的长度 |
| native_distance | 两点之间的近似距离 |
| native_length | 向量的近似长度 |
| native_normalize | 近似归一化向量 |
| normalize | 归一化向量 |
矩阵函数
这些函数允许您操作 2x2、3x3 和 4x4 维度的方阵。它们对于图形转换特别有用,并且与 OpenGL 兼容。
我们对行和列使用零基索引。例如,rs_matrix4x4 的最后一个元素位于 (3, 3)。
RenderScript 使用列主序矩阵和基于列的向量。向量的变换通过后乘向量完成,例如 (matrix * vector),由 rsMatrixMultiply() 提供。
要创建一个同时执行两个变换的变换矩阵,请将两个源矩阵相乘,并将第一个变换作为右参数。例如,要创建一个应用变换 s1 后再应用 s2 的变换矩阵,请调用 rsMatrixLoadMultiply(&combined, &s2, &s1)。这源自 s2 * (s1 * v),即 (s2 * s1) * v。
我们有两种风格的函数用于创建变换矩阵:rsMatrixLoadTransformation 和 rsMatrixTransformation。前者风格简单地将变换矩阵存储在第一个参数中。后者修改一个预先存在的变换矩阵,以便新的变换首先发生。例如,如果您在一个已经执行缩放的矩阵上调用 rsMatrixTranslate(),则当结果矩阵应用于向量时,将首先执行平移,然后执行缩放。
| 函数 | |
|---|---|
| rsExtractFrustumPlanes | 计算视锥体平面 |
| rsIsSphereInFrustum | 检查球体是否在视锥体平面内 |
| rsMatrixGet | 获取一个元素 |
| rsMatrixInverse | 原地反转矩阵 |
| rsMatrixInverseTranspose | 原地反转并转置矩阵 |
| rsMatrixLoad | 加载或复制矩阵 |
| rsMatrixLoadFrustum | 加载视锥体投影矩阵 |
| rsMatrixLoadIdentity | 加载单位矩阵 |
| rsMatrixLoadMultiply | 乘以两个矩阵 |
| rsMatrixLoadOrtho | 加载正交投影矩阵 |
| rsMatrixLoadPerspective | 加载透视投影矩阵 |
| rsMatrixLoadRotate | 加载旋转矩阵 |
| rsMatrixLoadScale | 加载缩放矩阵 |
| rsMatrixLoadTranslate | 加载平移矩阵 |
| rsMatrixMultiply | 将矩阵乘以向量或另一个矩阵 |
| rsMatrixRotate | 对变换矩阵应用旋转 |
| rsMatrixScale | 对变换矩阵应用缩放 |
| rsMatrixSet | 设置一个元素 |
| rsMatrixTranslate | 对变换矩阵应用平移 |
| rsMatrixTranspose | 原地转置矩阵 |
四元数函数
以下函数用于操作四元数。
| 函数 | |
|---|---|
| rsQuaternionAdd | 添加两个四元数 |
| rsQuaternionConjugate | 共轭四元数 |
| rsQuaternionDot | 两个四元数的点积 |
| rsQuaternionGetMatrixUnit | 从四元数获取旋转矩阵 |
| rsQuaternionLoadRotate | 创建旋转四元数 |
| rsQuaternionLoadRotateUnit | 表示围绕任意单位向量旋转的四元数 |
| rsQuaternionMultiply | 将四元数乘以标量或另一个四元数 |
| rsQuaternionNormalize | 归一化四元数 |
| rsQuaternionSet | 创建四元数 |
| rsQuaternionSlerp | 两个四元数之间的球面线性插值 |
原子更新函数
要更新多个线程共享的值,请使用以下函数。它们确保值以原子方式更新,即内存读取、更新和内存写入以正确的顺序完成。
这些函数比它们的非原子等价函数慢,因此只在需要同步时使用它们。
请注意,在 RenderScript 中,即使您没有显式创建线程,您的代码也很可能在单独的线程中运行。RenderScript 运行时经常会将一个内核的执行分割到多个线程中。更新全局变量应使用原子函数。如果可能,修改您的算法以完全避免使用它们。
| 函数 | |
|---|---|
| rsAtomicAdd | 线程安全加法 |
| rsAtomicAnd | 线程安全按位与 |
| rsAtomicCas | 线程安全比较并设置 |
| rsAtomicDec | 线程安全减法 |
| rsAtomicInc | 线程安全增法 |
| rsAtomicMax | 线程安全最大值 |
| rsAtomicMin | 线程安全最小值 |
| rsAtomicOr | 线程安全按位或 |
| rsAtomicSub | 线程安全减法 |
| rsAtomicXor | 线程安全按位异或 |
时间函数和类型
以下函数可用于获取当前时钟时间和当前系统运行时间。不建议在内核内部调用这些函数。
| 类型 | |
|---|---|
| rs_time_t | 自 1970 年 1 月 1 日以来的秒数 |
| rs_tm | 日期和时间结构 |
| 函数 | |
|---|---|
| rsGetDt | 上次调用以来的经过时间 |
| rsLocaltime | 转换为本地时间 |
| rsTime | 自 1970 年 1 月 1 日以来的秒数 |
| rsUptimeMillis | 系统运行时间(毫秒) |
| rsUptimeNanos | 系统运行时间(纳秒) |
Allocation 创建函数
以下函数可用于从 Script 创建 Allocations。
这些函数可以直接或间接从可调用函数中调用。如果某些控制流路径可能导致从 RenderScript 内核函数调用这些函数,则会生成编译器错误。
| 函数 | |
|---|---|
| rsCreateAllocation | 创建给定 Type 的 rs_allocation 对象。 |
| rsCreateElement | 创建指定数据类型的 rs_element 对象 |
| rsCreatePixelElement | 创建指定数据类型和数据种类的 rs_element 对象 |
| rsCreateType | 创建具有指定 Element 和形状属性的 rs_type 对象 |
| rsCreateVectorElement | 创建指定数据类型和向量宽度的 rs_element 对象 |
Allocation 数据访问函数
以下函数可用于获取和设置构成 allocation 的单元格。
- 使用 rsGetElementAt* 和 rsSetElementAt 函数访问单个单元格。
- 可以使用 rsAllocationCopy* 和 rsAllocationV* 函数复制多个单元格。
- 通过 sampler 获取值,请使用 rsSample。
| 函数 | |
|---|---|
| rsAllocationCopy1DRange | 在 allocation 之间复制连续单元格 |
| rsAllocationCopy2DRange | 在 allocation 之间复制矩形区域的单元格 |
| rsAllocationVLoadX | 从标量的 allocation 获取向量 |
| rsAllocationVStoreX | 将向量存储到标量的 allocation 中 |
| rsGetElementAt | 从 allocation 返回一个单元格 |
| rsGetElementAtYuv_uchar_U | 获取 YUV allocation 的 U 分量 |
| rsGetElementAtYuv_uchar_V | 获取 YUV allocation 的 V 分量 |
| rsGetElementAtYuv_uchar_Y | 获取 YUV allocation 的 Y 分量 |
| rsSample | 从纹理 allocation 中采样值 |
| rsSetElementAt | 设置 allocation 的一个单元格 |
对象特性函数
以下函数可用于查询 Allocation、Element 或 Sampler 对象的特性。这些对象是从 Java 创建的。您无法从脚本中创建它们。
Allocations
Allocations 是用于向 RenderScript 内核传递数据和从 RenderScript 内核接收数据的主要方法。
它们是结构化的单元格集合,可用于存储位图、纹理、任意数据点等。
这个单元格集合可能具有多个维度(X、Y、Z、Array0、Array1、Array2、Array3)、面(用于立方体贴图)和细节级别(用于 mipmapping)。
有关创建 Allocations 的详细信息,请参阅 android.renderscript.Allocation。
Elements
在 RenderScript 中,“element”一词的用法有些模糊,它既表示 Allocation 单元格的类型信息,也表示该类型的实例化。例如
- rs_element 是类型规范的句柄,并且
- 在诸如 rsGetElementAt() 的函数中,“element”表示类型的实例化,即 Allocation 的一个单元格。
以下函数允许您查询类型规范的特性。
Element 可以指定 C 语言中找到的简单数据类型,例如整数、浮点数或布尔值。它还可以指定 RenderScript 对象的句柄。基本类型列表请参阅 rs_data_type。
Elements 可以指定基本类型的固定大小向量版本(大小为 2、3 或 4)。Elements 可以组合成复杂的 Elements,创建类似于 C 结构定义。
Elements 还可以有一个 kind,它是用于解释像素数据的语义信息。请参阅 rs_data_kind。
创建常见元素的 Allocations 时,您只需使用许多预定义 Element 中的一个,例如 F32_2。
要创建复杂的 Elements,请使用 Element.Builder Java 类。
Samplers
Sampler 对象定义如何在内核中将 Allocations 读取为结构。请参阅 android.renderscript.S。
| 函数 | |
|---|---|
| rsAllocationGetDimFaces | 存在多个面 |
| rsAllocationGetDimLOD | 存在细节级别 |
| rsAllocationGetDimX | X 维度的大小 |
| rsAllocationGetDimY | Y 维度的大小 |
| rsAllocationGetDimZ | Z 维度的大小 |
| rsAllocationGetElement | 获取描述 Allocation 单元格的对象 |
| rsClearObject | 释放对象 |
| rsElementGetBytesSize | Element 的大小 |
| rsElementGetDataKind | Element 的种类 |
| rsElementGetDataType | Element 的数据类型 |
| rsElementGetSubElement | 复杂 Element 的子元素 |
| rsElementGetSubElementArraySize | 复杂 Element 子元素的数组大小 |
| rsElementGetSubElementCount | 子元素数量 |
| rsElementGetSubElementName | 子元素的名称 |
| rsElementGetSubElementNameLength | 子元素名称的长度 |
| rsElementGetSubElementOffsetBytes | 实例化子元素的偏移量 |
| rsElementGetVectorSize | Element 的向量大小 |
| rsIsObject | 检查空句柄 |
| rsSamplerGetAnisotropy | Sampler 的各向异性 |
| rsSamplerGetMagnification | Sampler 放大值 |
| rsSamplerGetMinification | Sampler 缩小值 |
| rsSamplerGetWrapS | Sampler Wrap S 值 |
| rsSamplerGetWrapT | Sampler Wrap T 值 |
内核调用函数和类型
rsForEach() 函数可用于调用脚本的根内核。
其他函数用于获取正在执行的内核调用的特性,例如维度和当前索引。这些函数接受 rs_kernel_context 作为参数。
| 类型 | |
|---|---|
| rs_for_each_strategy_t | 建议的单元格处理顺序 |
| rs_kernel | 内核函数的句柄 |
| rs_kernel_context | 内核调用上下文的句柄 |
| rs_script_call_t | 单元格迭代信息 |
| 函数 | |
|---|---|
| rsForEach | 启动一个内核 |
| rsForEachInternal | (内部 API)在当前 Script 中启动内核(带有插槽号) |
| rsForEachWithOptions | 启动带有选项的内核 |
| rsGetArray0 | 指定内核上下文的 Array0 维度中的索引 |
| rsGetArray1 | 指定内核上下文的 Array1 维度中的索引 |
| rsGetArray2 | 指定内核上下文的 Array2 维度中的索引 |
| rsGetArray3 | 指定内核上下文的 Array3 维度中的索引 |
| rsGetDimArray0 | 指定内核上下文的 Array0 维度的大小 |
| rsGetDimArray1 | 指定内核上下文的 Array1 维度的大小 |
| rsGetDimArray2 | 指定内核上下文的 Array2 维度的大小 |
| rsGetDimArray3 | 指定内核上下文的 Array3 维度的大小 |
| rsGetDimHasFaces | 指定内核上下文是否存在多个面 |
| rsGetDimLod | 指定内核上下文的细节级别数 |
| rsGetDimX | 指定内核上下文的 X 维度的大小 |
| rsGetDimY | 指定内核上下文的 Y 维度的大小 |
| rsGetDimZ | 指定内核上下文的 Z 维度的大小 |
| rsGetFace | 指定内核上下文的 Face 坐标 |
| rsGetLod | 指定内核上下文的细节级别维度中的索引 |
输入/输出函数
这些函数用于
- 向 Java 客户端发送信息,以及
- 发送已处理的 allocation 或接收下一个要处理的 allocation。
| 函数 | |
|---|---|
| rsAllocationIoReceive | 从队列接收新内容 |
| rsAllocationIoSend | 向队列发送新内容 |
| rsSendToClient | 向客户端发送消息,非阻塞 |
| rsSendToClientBlocking | 向客户端发送消息,阻塞 |
调试函数
以下函数旨在用于应用开发期间。不应在发布的生产应用中使用它们。
| 函数 | |
|---|---|
| rsDebug | 记录消息和值 |
图形函数和类型
RenderScript 的图形子系统在 API 级别 23 时已移除。