概览
标量:
RenderScript 支持以下标量数值类型:
矢量:
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。如需查看运算列表,请参阅 Matrix 函数。
也可以通过 rs_quaternion 支持四元数。有关运算列表,请参阅四分位函数。
摘要
类型
char2 :两个 8 位有符号整数
类型定义符:char attribute((ext_vector_type(2)))
包含两个字符的矢量。这两个字符将以 16 位对齐的方式打包到单个 16 位字段中。
char3 :三个 8 位有符号整数
类型定义符:char attribute((ext_vector_type(3)))
三个字符的矢量。这三个字符将以 32 位对齐的方式封装到单个 32 位字段中。
char4 :四个 8 位有符号整数
类型定义符:char attribute((ext_vector_type(4)))
包含四个字符的矢量。这四个字符将以 32 位对齐的方式打包到单个 32 位字段中。
double2 :两个 64 位浮点
类型定义符:double attribute((ext_vector_type(2)))
两个双精度浮点数的矢量。这两个双字段打包到一个 128 位字段中,按 128 位对齐。
double3 :三个 64 位浮点
类型定义符:double attribute((ext_vector_type(3)))
三个双精度数的矢量。这三个双字段打包到一个 256 位字段中,按 256 位对齐。
double4 :四个 64 位浮点
类型定义符:double attribute((ext_vector_type(4)))
四个双精度数值的矢量。这四个双字段打包到一个 256 位字段中,按 256 位对齐。
float2 :两个 32 位浮点
类型定义符:float attribute((ext_vector_type(2)))
两个浮点数的矢量。这两个浮点数将打包到一个以 64 位对齐的 64 位字段中。
两个浮点数的矢量。这两个浮点数将打包到一个以 64 位对齐的 64 位字段中。
float3 :三个 32 位浮点
类型定义符:float attribute((ext_vector_type(3)))
三个浮点数的矢量。这三个浮点数将打包到一个 128 位字段中,并以 128 位对齐。
float4 :四个 32 位浮点
类型定义符:float attribute((ext_vector_type(4)))
四个浮点类型的矢量。这四个浮点数将打包到一个 128 位字段中,并以 128 位对齐。
half :16 位浮点值
以下类型的类型定义符:__fp16 此项为 API 级别 23 中的新增配置
一个 16 位浮点值。
half2 :两个 16 位浮点
类型为:半 attribute((ext_vector_type(2))) 此项为 API 级别 23 中的新增配置
半浮点类型的矢量版本。提供两个半字段,以 32 位对齐方式打包到单个 32 位字段中。
half3 :三个 16 位浮点
类型为:半 attribute((ext_vector_type(3))) 此项为 API 级别 23 中的新增配置
半浮点类型的矢量版本。提供三个半字段,它们打包到一个 64 位字段中,按 64 位对齐。
half4 :四个 16 位浮点
类型为:半 attribute((ext_vector_type(4))) 此项为 API 级别 23 中的新增配置
半浮点类型的矢量版本。提供四个半字段,打包到一个 64 位字段中,按 64 位对齐。
int16_t :16 位有符号整数
以下类型定义符:short
一个 16 位有符号整数类型。
int2 :两个 32 位有符号整数
类型定义符:int attribute((ext_vector_type(2)))
两个整数的矢量。这两个整数将以 64 位对齐的方式封装到单个 64 位字段中。
int3 :三个 32 位有符号整数
类型定义符:int attribute((ext_vector_type(3)))
三个整数的矢量。这三个整数将以 128 位对齐的方式封装到单个 128 位字段中。
int32_t :32 位有符号整数
类型定义符:int
32 位有符号整数类型。
int4 :四个 32 位有符号整数
类型定义符:int attribute((ext_vector_type(4)))
四个整数的矢量。这两个 4 被打包到一个 128 位字段中,并采用 128 位对齐。
int64_t :64 位有符号整数
从 API 级别 21 及更高级别中移除的 typedef:long long
以下类型的类型定义符:long 在 API 级别 21 中引入
64 位有符号整数类型。
int8_t :8 位有符号整数
类型定义符:char
8 位有符号整数类型。
long2 :两个 64 位有符号整数
类型定义符:long attribute((ext_vector_type(2)))
两个长整型的矢量。这两个长整型将打包到一个 128 位字段中,并以 128 位对齐。
long3 :三个 64 位有符号整数
类型定义符:long attribute((ext_vector_type(3)))
三个长整型的矢量。这三个长整型将按 256 位对齐打包到单个 256 位字段中。
long4 :四个 64 位有符号整数
类型定义符:long attribute((ext_vector_type(4)))
四个长整型的矢量。这四个长整型将打包到一个 256 位字段中,并以 256 位对齐。
rs_matrix2x2 :32 位浮点数的 2x2 矩阵
一种结构,其中包含以下字段:
浮点数 m[4]
一个 2x2 方形浮点数矩阵。条目存储在数组中的位置 [row*2 + col]。
请参阅 Matrix 函数。
rs_matrix3x3 :32 位浮点数的 3x3 矩阵
一种结构,其中包含以下字段:
浮点数 m[9]
3x3 正方形浮点数。条目存储在数组中的位置 [row*3 + col]。
请参阅 Matrix 函数。
rs_matrix4x4 :32 位浮点数的 4x4 矩阵
一种结构,其中包含以下字段:
浮点数 m[16]
一个 4x4 方形浮点数矩阵。条目存储在数组中的位置 [row*4 + col]。
请参阅 Matrix 函数。
rs_quaternion :四元数
类型定义符:float4
表示四元数的 4x4 正方形浮点数矩阵。
请参阅四元数函数。
short2 :两个 16 位有符号整数
类型定义符:短 attribute((ext_vector_type(2)))
两个 Shorts 短视频的矢量。这两个 Shorts 短视频以 32 位对齐方式打包到一个 32 位字段中。
short3 :三个 16 位有符号整数
类型定义符:短 attribute((ext_vector_type(3)))
三个 Shorts 短视频的矢量。这三个短字段按 64 位对齐封装到单个 64 位字段中。
short4 :四个 16 位有符号整数
类型定义符:短 attribute((ext_vector_type(4)))
四个短视频的矢量。这四个短字段按 64 位对齐打包到一个 64 位字段中。
size_t :无符号大小类型
以下类型定义符:uint64_t 针对 64 位进行编译时。
以下类型定义符:uint32_t 针对 32 位进行编译时。
无符号大小类型。位数取决于编译标志。
ssize_t :有符号的尺寸类型
类型为:int64_t 针对 64 位进行编译时。
类型为:int32_t 针对 32 位进行编译时。
有符号的大小类型。位数取决于编译标志。
uchar :8 位未签名整数
类型定义符:uint8_t
8 位无符号整数类型。
uchar2 :两个 8 位未签名整数
类型定义符:uchar attribute((ext_vector_type(2)))
两个 uchar 的向量。这两个 uchar 字段按 16 位对齐打包到单个 16 位字段中。
uchar3 :三个 8 位无符号整数
类型定义符:uchar attribute((ext_vector_type(3)))
三个 uchars 的矢量。这三个 uchar 字段按 32 位对齐打包到单个 32 位字段中。
uchar4 :四个 8 位未签名整数
类型定义符:uchar attribute((ext_vector_type(4)))
四个 uchars 的矢量。这四个 uchar 字段打包到一个 32 位字段中,以 32 位对齐。
uint :32 位未签名整数
类型定义符:uint32_t
32 位无符号整数类型。
uint16_t :16 位无符号整数
以下类型定义:无符号短整数
16 位无符号整数类型。
uint2 :两个 32 位无符号整数
类型定义符:uint attribute((ext_vector_type(2)))
两个 uint 的矢量。这两个 uint 将以 64 位对齐打包到单个 64 位字段中。
uint3 :三个 32 位无符号整数
类型定义符:uint attribute((ext_vector_type(3)))
三个 uint 的矢量。这三个 uint 将按 128 位对齐打包到单个 128 位字段中。
uint32_t :32 位无符号整数
类型定义符:unsigned int
32 位无符号整数类型。
uint4 :四个 32 位未签名整数
类型定义符:uint attribute((ext_vector_type(4)))
四个 uint 的矢量。这四个 uint 以 128 位对齐打包到单个 128 位字段中。
uint64_t :64 位无符号整数
以下类型定义:unsigned long long 已从 API 级别 21 及更高级别中移除
以下类型定义:unsigned long 在 API 级别 21 中引入的
64 位无符号整数类型。
uint8_t :8 位无符号整数
类型定义符:unsigned char
8 位无符号整数类型。
ulong :64 位未签名整数
类型定义符:uint64_t
64 位无符号整数类型。
ulong2 :两个 64 位未签名整数
类型定义符:ulong attribute((ext_vector_type(2)))
两个乌隆的矢量。这两个 ulong 按 128 位对齐封装到单个 128 位字段中。
ulong3 :三个 64 位无符号整数
类型定义符:ulong attribute((ext_vector_type(3)))
三个乌隆的矢量。这三个 ulong 字段打包成一个采用 256 位对齐的 256 位字段。
ulong4 :四个 64 位未签名整数
类型定义符:ulong attribute((ext_vector_type(4)))
四个乌隆的矢量。这四个 ulong 字段打包成一个采用 256 位对齐的 256 位字段。
ushort :16 位未签名整数
类型定义符:uint16_t
16 位无符号整数类型。
ushort2 :两个 16 位无符号整数
类型定义符:ushort attribute((ext_vector_type(2)))
两个 ushort 的矢量。这两个 ushort 字段打包到一个 32 位字段中,并采用 32 位对齐方式。
ushort3 :三个 16 位无符号整数
类型定义符:ushort attribute((ext_vector_type(3)))
三个 ushort 的矢量。这三个 ushort 字段以 64 位对齐打包到单个 64 位字段中。
ushort4 :四个 16 位未签名整数
类型定义符:ushort attribute((ext_vector_type(4)))
四个 ushort 的矢量。这四个 ushort 字段打包成一个采用 64 位对齐的 64 位字段。
本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2023-10-18。