RenderScript Runtime API Reference
概观
RenderScript是一个高性能的运行时,在本地级别提供计算操作。 RenderScript代码在运行时编译的设备,允许平台的独立性,以及。
该参考文档描述了RenderScript运行时API,你可以利用编写RenderScript代码C99。该RenderScript计算头文件自动包括你。
要使用RenderScript,你需要利用这里记录以及Android框架的API RenderScript的RenderScript运行时API。关于Android的框架API文档,请参阅android.renderscript包的参考。
有关如何使用RenderScript以及如何运行和Android框架API互动发展的更多信息,请参阅RenderScript开发人员指南和RenderScript样品。
数值类型
标量:
RenderScript支持以下的标量数值类型:
8 bits | 16 bits | 32 bits | 64 bits | |
Integer: | char, int8_t | short, int16_t | int32_t | long, long long, int64_t |
Unsigned integer: | uchar, uint8_t | ushort, uint16_t | uint, uint32_t | ulong, uint64_t |
Floating point: | float | double |
Types | |
---|---|
char2 | Two 8 bit signed integers |
char3 | Three 8 bit signed integers |
char4 | Four 8 bit signed integers |
double2 | Two 64 bit floats |
double3 | Three 64 bit floats |
double4 | Four 64 bit floats |
float2 | Two 32 bit floats |
float3 | Three 32 bit floats |
float4 | Four 32 bit floats |
int16_t | 16 bit signed integer |
int2 | Two 32 bit signed integers |
int3 | Three 32 bit signed integers |
int32_t | 32 bit signed integer |
int4 | Four 32 bit signed integers |
int64_t | 64 bit signed integer |
int8_t | 8 bit signed integer |
long2 | Two 64 bit signed integers |
long3 | Three 64 bit signed integers |
long4 | Four 64 bit signed integers |
rs_matrix2x2 | 2x2 matrix of 32 bit floats |
rs_matrix3x3 | 3x3 matrix of 32 bit floats |
rs_matrix4x4 | 4x4 matrix of 32 bit floats |
rs_quaternion | Quaternion |
short2 | Two 16 bit signed integers |
short3 | Three 16 bit signed integers |
short4 | Four 16 bit signed integers |
size_t | Unsigned size type |
ssize_t | Signed size type |
uchar | 8 bit unsigned integer |
uchar2 | Two 8 bit unsigned integers |
uchar3 | Three 8 bit unsigned integers |
uchar4 | Four 8 bit unsigned integers |
uint | 32 bit unsigned integer |
uint16_t | 16 bit unsigned integer |
uint2 | Two 32 bit unsigned integers |
uint3 | Three 32 bit unsigned integers |
uint32_t | 32 bit unsigned integer |
uint4 | Four 32 bit unsigned integers |
uint64_t | 64 bit unsigned integer |
uint8_t | 8 bit unsigned integer |
ulong | 64 bit unsigned integer |
ulong2 | Two 64 bit unsigned integers |
ulong3 | Three 64 bit unsigned integers |
ulong4 | Four 64 bit unsigned integers |
ushort | 16 bit unsigned integer |
ushort2 | Two 16 bit unsigned integers |
ushort3 | Three 16 bit unsigned integers |
ushort4 | Four 16 bit unsigned integers |
8 bits | 16 bits | 32 bits | 64 bits | |
Integer: | char, int8_t | short, int16_t | int32_t | long, long long, int64_t |
Unsigned integer: | uchar, uint8_t | ushort, uint16_t | uint, uint32_t | ulong, uint64_t |
Floating point: | float | double |
Types | |
---|---|
rs_allocation | Handle to an allocation |
rs_allocation_cubemap_face | Enum for selecting cube map faces |
rs_allocation_usage_type | Bitfield to specify how an allocation is used |
rs_data_kind | Element data kind |
rs_data_type | Element basic data type |
rs_element | Handle to an element |
rs_sampler | Handle to a Sampler |
rs_sampler_value | Sampler wrap T value |
rs_script | Handle to a Script |
rs_type | Handle to a Type |
功能
转换转换数字矢量
rsPackColorTo8888从创建一个彩车RGBA uchar4
rsUnpackColor8888从创建一个uchar4 RGBA个float4
hsvToRGB转换一个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维空间中的单个载体的功能。
数学运算的32位浮点数的精度由rs_fp_relaxed的编译指示和rs_fp_full影响。在rs_fp_relaxed,低于正常价值可能被刷新到零取整可能接近零来完成。相比之下,rs_fp_full需要正确处理低于正常价值,即比1.17549435e-38F小。 rs_fp_rull还需要就近舍用,甚至关系。
不同精度/速度的权衡可以通过使用共同的数学函数的变体来实现。其名称开头的函数
native_:可定制的硬件实现较弱的精度。此外,次正规值可被刷新到零,向零取整,可以使用和NaN和无穷大输入可能无法正确处理。
half_:可以执行使用16位的花车内部计算。此外,次正规值可被刷新为零,并朝向零四舍五入都可以使用。
常量
1 M_1_PI/ PI,作为一个32位浮点
M_2_PI2/ PI,作为一个32位浮点
M 2 SQRT PI 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圆周率,作为一个32位浮点
M_PI_2 PI /2,作为一个32位浮点
M_PI_4π/ 4,作为一个32位浮点
M_SQRT1_21 / SQRT(2),如一个32位浮点
M_SQRT2的sqrt(2),如一个32位浮点
功能
腹肌一个整数的绝对值
ACOS反余弦
ACOSH反双曲余弦
acospi反余弦通过PI分
ASIN反正弦
ASINH反双曲正弦
asinpi反正弦被分为圆周率
ATAN反正切
ATAN2比率的反正切
一个比atan2pi反正切,通过PI分
ATANH反双曲正切
atanpi反正切被分为圆周率
CBRT立方根
CEIL最小整数比的值小于
夹紧约束的值的范围
前导0位的数目CLZ
复制符号复制一个数字的符号到另一个
COS余弦
COSH Hypebolic余弦
若干cospi余弦乘以圆周率
度将弧度转换成度
ERF数学误差函数
ERFC数学互补错误函数
EXP e的数
exp10 10提高到一个号码
EXP2 2升高到一个数
的expm1 e的数减一
一个浮动的晶圆厂绝对值
fdim两个值之间的差异正
地板最小整数不大于某个值
FMA乘法和加法
两个浮点数的最大FMAX
两个浮点数的最小FMIN
FMOD模
FRACT正小数部分
frexp二进制尾数和指数
half_recip倒数计算到16位精度
平方根的half_rsqrt倒数计算的,以16位的精度
half_sqrt平方根计算到16位精度
hypot斜边
ilogb基地二期指数
ldexp创建一个从尾数和指数浮点
伽玛功能的lgamma函数自然对数
日志自然对数
LOG10基地10的对数
log1p值加1的自然对数
LOG2基地2的对数
logb基地二期指数
疯狂的乘法和加法
最大最大
min最小
混合混合料的两个值
MODF整数和小数成分
楠不是一个数字
native_acos近似反余弦
native_acosh近似反双曲余弦
native_acospi近似反余弦通过PI分
native_asin近似反正弦
native_asinh近似反双曲正弦
native_asinpi近似反正弦被分为圆周率
native_atan近似反正切
一个比native_atan2近似反正切
一个比native_atan2pi近似反正切,通过PI分
native_atanh近似反双曲正切
native_atanpi近似反正切被分为圆周率
native_cbrt近似立方根
native_cos近似余弦
native_cosh近似hypebolic余弦
若干native_cospi近似余弦乘以圆周率
native_divide近似师
提出了一些近似native_expË
native_exp10近似10提高到一个数
native_exp2近似2升高到一个数
提出了一些减一native_expm1近似Ë
native_hypot近似斜边
native_log近似自然对数
native_log10基地大约10的对数
值加1 native_log1p近似自然对数
native_log2近似基地2的对数
native_powr近似积极基地提升到一个指数
native_recip近似倒数
native_rootn近似n次方根
平方根的native_rsqrt近似倒数
native_sin近似正弦波
native_sincos近似正弦和余弦
native_sinh近似双曲正弦
若干native_sinpi近似正弦乘以圆周率
native_sqrt近似平方根
native_tan近似切线
native_tanh近似双曲正切
若干native_tanpi近似切线乘以圆周率
函数nextafter下一步浮点数
POW基地提升到一个指数
POWN基地提升到一个整数指数
POWR积极基地提升到一个指数
弧度度转换为弧度
除法的余余
remquo余和商某师
RINT回合连
rootn N次方根
道道远离零
rsRand伪随机数
平方根的rsqrt倒数
签署一份价值符号
正弦罪
正余弦正弦和余弦
SINH双曲正弦
若干sinpi正弦乘以圆周率
SQRT平方根
步0,如果小于一个值,否则为0
TAN正切
正切双曲正切
若干tanpi正切乘以圆周率
tgamma伽玛功能
TRUNC截断浮点
这些功能解释输入参数作为在n维空间中的向量的表示。
数学运算的32位浮点数的精度由rs_fp_relaxed的编译指示和rs_fp_full影响。见数学常数和函数的详细信息。
不同精度/速度的权衡可以通过使用共同的数学函数的变体来实现。其名称开头的函数
native_:可定制的硬件实现较弱的精度。此外,次正规值可被刷新到零,向零取整,可以使用和NaN和无穷大输入可能无法正确处理。
fast_:可以执行使用16位的花车内部计算。此外,次正规值可被刷新为零,并朝向零四舍五入都可以使用。
功能
两个向量的十字叉积
两点之间的距离的距离
两个向量的点积点
fast_distance两点之间的距离大约
一个向量的fast_length近似长度
快速近似归一归一化矢量
矢量长度长
两点之间native_distance距离大约
一个向量的native_length近似长度
当地大约正常化归一化矢量
标准化规范化的向量
矩阵函数
这些功能让你操纵排名的2x2,3x3的,和4x4的方阵。它们是图形转换特别有用,并且与兼容OpenGL。
我们使用的行和列的从零开始的索引。例如。一个rs_matrix4x4的最后一个元素在(3,3)被发现。
RenderScript使用列主要矩阵和基于列的向量。转化载体通过postmultiplying矢量进行,例如()(矩阵*矢量),由rsMatrixMultiply提供。
要创建一次执行两个转换的转换矩阵,乘两个源矩阵,与第一改造为右边的参数。例如。以创建适用S1后跟S2变换的变换矩阵,调用rsMatrixLoadMultiply(相结合,及S2,和S1)。这来自S2 *(S1 * v)中,它是(S2 * S1)*诉
我们有两种风格的函数来创建变换矩阵: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系统正常运行时间
分配数据访问功能
以下功能可以被用来获取和设置包括分配的细胞。
各个单元使用rsGetElementAt *和rsSetElementAt功能访问。
多个小区可以使用rsAllocationCopy *和rsAllocationV *函数被复制。
对于通过采样得到的值,使用rsSample。
该rsGetElementAt和rsSetElement *功能有点名不副实。他们没有获取或设置元素,这是类似于数据类型;他们获取或设置单元格。把它们当作rsGetCellAt和和rsSetCellAt。
功能
分配之间rsAllocationCopy1DRange连续复制细胞
rsAllocationCopy2DRange分配复制的细胞之间的矩形区域
rsAllocationVLoadX从标量的分配得到一个向量
rsAllocationVStoreX存储载体导入标量的分配
rsGetElementAt从分配返回一个单元格
rsGetElementAtYuv_uchar_U获取YUVs的分配的U分量
rsGetElementAtYuv_uchar_V获取YUVs的分配的V分量
rsGetElementAtYuv_uchar_Y获取YUVs的分配的Y成分
rsSample从样本纹理分配的值
rsSetElementAt设置分配的细胞
对象特性的功能
以下功能可以被用来查询一个分配,元素,或取样对象的特性。这些对象是从Java创建。你不能从脚本创建它们。
分配:
分配是用于传递数据和从RenderScript内核的主要方法。
它们是可用于存储位图,纹理细胞,任意的数据点等的结构化集合
细胞的集合可能有多个维度(X,Y,Z,ARRAY0,数组1,数组2,ARRAY3),面(对立方贴图),和细节水平(纹理映射)。
见android.renderscript.Allocation关于建立分配细节。
内容:
术语“元素”是在RenderScript使用有点含糊,作为用于分配的小区都类型信息和该类型的实例。例如:
rs_element是一个句柄类型规范,
在像rsGetElementAt()函数,“元素”指的是式的实例,即,分配的小区。
下面的功能让你查询类型排除基本的特点。
如发现在C元素可以指定一个简单的数据类型,例如一个整数,浮点数或布尔。它也可以指定一个句柄RenderScript对象。基本类型的列表,请参阅rs_data_type。
元素可以指定固定大小向量(大小2,3,或4)的基本类型的版本。元素可以一起组合成复杂的元素,创造出的C结构定义的等价物。
元件也可以有一种,这是用于解释像素数据的语义信息。见rs_data_kind。
当创建共同的要素分配,你可以简单地使用许多预定义的元素,如F32_2之一。
要创建复杂的元素,使用Element.Builder Java类。
取样:
采样对象定义如何分配可以在内核中被读作结构。见android.renderscript.S。
功能
多张人脸的rsAllocationGetDimFaces存在
细节层次的rsAllocationGetDimLOD存在
X尺寸的rsAllocationGetDimX尺寸
Y尺寸的大小rsAllocationGetDimY
在Z维度的rsAllocationGetDimZ尺寸
rsAllocationGetElement获取描述分配的单元格的对象
rsClearObject释放对象
rsElementGetBytesSize一个元素的大小
元素的种类rsElementGetDataKind
元素的rsElementGetDataType数据类型
一个复杂的元素rsElementGetSubElement子元素
一个复杂的元素的子元素的rsElementGetSubElementArraySize数组大小
rsElementGetSubElementCount子元素的数量
子元件的rsElementGetSubElementName名称
子元素的名称的rsElementGetSubElementNameLength长度
rsElementGetSubElementOffsetBytes偏移实例子元件的
元素的矢量rsElementGetVectorSize大小
rsIsObject检查空手柄
采样器rsSamplerGetAnisotropy各向异性
rsSamplerGetMagnification采样值放大
rsSamplerGetMinification采样值的微小
rsSamplerGetWrapS采样包S值
rsSamplerGetWrapT采样包的T值
内核调用功能和种类
所述rsForEach()函数可以被用于调用脚本的根内核。
类型
rs_for_each_strategy_t建议细胞处理顺序
rs_script_call_t细胞迭代信息
功能
rsForEach调用脚本的根内核
输入/输出功能
这些功能被用于:
将信息发送到Java客户端,并
发送处理分配或接收下一分配处理。
功能
rsAllocationIoReceive接收从队列中的新的内容
rsAllocationIoSend发送新的内容到队列
rsSendToClient发送消息到客户端,非阻塞
rsSendToClientBlocking将消息发送给客户端,阻断
调试功能
以下功能意在应用程序的研究与开发中使用。它们不应在航运应用中使用。
功能
rsDebug日志信息和价值
图形功能和种类
RenderScript的图形子系统已被弃用。
8 bits | 16 bits | 32 bits | 64 bits | |
Integer: | char, int8_t | short, int16_t | int32_t | long, long long, int64_t |
Unsigned integer: | uchar, uint8_t | ushort, uint16_t | uint, uint32_t | ulong, uint64_t |
Floating point: | float | double |