總覽
純量:
RenderScript 支援下列純量數值類型:
8 位元 | 16 位元 | 32 位元 | 64 位元 | |
整數: | char、int8_t | 簡短、int16_t | int32_t | long、長版、int64_t |
非帶號整數: | uchar、uint8_t | ushort, uint16_t | uint、uint32_t | ulong、uint64_t |
浮點: | 半場 | 浮點值 | 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
您可以使用由多個字母或索引串連的 ID,一次存取一個向量的多個項目。產生的向量大小等於命名的項目數量。
在上述範例中,中間兩個項目可以使用 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 位元帶正負號整數 |
char3 | 三個 8 位元帶正負號整數 |
char4 | 四個 8 位元帶正負號整數 |
double2 | 2 個 64 位元浮點值 |
double3 | 3 個 64 位元浮點值 |
double4 | 四個 64 位元浮點值 |
float2 | 2 個 32 位元浮點值 |
float3 | 3 個 32 位元浮點值 |
float4 | 四個 32 位元浮點值 |
半價 | 16 位元浮點值 |
half2 | 2 個 16 位元浮點值 |
half3 | 3 個 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 | 32 位元浮點的 2x2 矩陣 |
rs_ Matrix3x3 | 32 位元浮點的 3x3 矩陣 |
rs_ Matrix4x4 | 32 位元浮點的 4x4 矩陣 |
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 位元無正負號整數 |
類型
char2 :兩個 8 位元帶正負號整數
一種 typedef:char __attribute__((ext_vector_type(2)))
兩個字元的向量。這兩個字元會以 16 位元對齊方式封裝為單一 16 位元欄位。
char3 :三個 8 位元帶正負號整數
一種 typedef:char __attribute__((ext_vector_type(3)))
三個字元的向量。這三個字元會封裝成單一 32 位元欄位,對齊方式為 32 位元。
char4 :四個 8 位元帶正負號整數
一種 typedef:char __attribute__((ext_vector_type(4)))
四個字元的向量。這四個字元會封裝成單一 32 位元欄位,對齊方式為 32 位元。
double2 :兩個 64 位元浮點值
一種 typedef:雙精度浮點數 __attribute__((ext_vector_type(2)))
兩個雙倍數的向量。這兩個雙欄位欄位已封裝為單一 128 位元欄位 (採用 128 位元對齊方式)。
double3 :3 個 64 位元浮點值
一種 typedef:雙精度浮點數 __attribute__((ext_vector_type(3)))
由三個雙倍數組成的向量。這三個雙欄位欄位已封裝成單一 256 位元欄位,對齊方式為 256 位元。
double4 :四個 64 位元浮點值
一種 typedef:雙精度浮點數 __attribute__((ext_vector_type(4)))
四個雙倍的向量。這四個雙欄位已封裝成單個 256 位元欄位,對齊方式為 256 位元。
float2 :兩個 32 位元浮點值
一種 typedef:浮點值 __attribute__((ext_vector_type(2)))
兩個浮點數的向量。這兩個浮點值會封裝成單一 64 位元欄位 (對齊方式為 64 位元)。
兩個浮點數的向量。這兩個浮點值會封裝成單一 64 位元欄位 (對齊方式為 64 位元)。
float3 :三個 32 位元浮點值
一種 typedef:浮點值 __attribute__((ext_vector_type(3)))
由三個浮點數組成的向量。這三個浮點值會封裝成單一 128 位元欄位,其對齊方式為 128 位元。
float4 :四個 32 位元浮點值
一種 typedef:浮點值 __attribute__((ext_vector_type(4)))
四個浮點類型的向量。這四個浮點值會封裝成單一 128 位元欄位,其對齊方式為 128 位元。
half :16 位元浮點值
已在 API 級別 23 中新增 typedef:__fp16 新增
16 位元浮點值。
half2 :兩個 16 位元浮點值
一種 typedef:半 __attribute__((ext_vector_type(2))) 已在 API 級別 23 中新增
半浮點類型的向量版本。提供兩個半欄位,並封裝成單一 32 位元欄位,與 32 位元對齊。
half3 :3 個 16 位元的浮點值
一種 typedef:半 __attribute__((ext_vector_type(3))) 已在 API 級別 23 中新增
半浮點類型的向量版本。提供三個半欄位,並封裝成單一 64 位元欄位 (採用 64 位元對齊方式)。
half4 :四個 16 位元浮點值
一種 typedef:半 __attribute__((ext_vector_type(4))) 已在 API 級別 23 中新增
半浮點類型的向量版本。提供四個半個欄位,並封裝成單一 64 位元欄位 (採用 64 位元對齊方式)。
int16_t :16 位元帶正負號整數
類型定義:短
16 位元帶正負號整數類型。
int2 :兩個 32 位元帶正負號整數
以下的 typedef:int___attribute__((ext_vector_type(2)))
兩個 int 的向量。這兩個 int 會封裝成單個 64 位元欄位 (對齊方式為 64 位元)。
int3 :三個 32 位元帶正負號整數
以下的 typedef:int___attribute__((ext_vector_type(3)))
三個 int 的向量。這三個 int 會封裝成單一 128 位元欄位,並以 128 位元對齊方式。
int32_t :32 位元帶正負號整數
一種 typedef: int
32 位元帶正負號整數類型。
int4 :四個 32 位元帶正負號整數
以下的 typedef:int___attribute__((ext_vector_type(4)))
4 int 的向量。這兩個四組將封裝為以 128 位元對齊方式的單一 128 位元欄位。
int64_t :64 位元帶正負號整數
int8_t :8 位元帶正負號整數
一種 typedef:字元
8 位元帶正負號整數類型。
long2 :兩個 64 位元帶正負號整數
以下的 typedef:long __attribute__((ext_vector_type(2)))
兩個長的向量。這兩個長長度會封裝為單一 128 位元欄位,並以 128 位元對齊方式。
long3 :三個 64 位元帶正負號整數
以下的 typedef:long __attribute__((ext_vector_type(3)))
三個長度的向量。這三個長字串會封裝成單一 256 位元欄位,並採用 256 位元對齊方式。
long4 :四個 64 位元帶正負號整數
以下的 typedef:long __attribute__((ext_vector_type(4)))
四個長的向量。這四個長度會封裝成單一 256 位元欄位,並採用 256 位元對齊方式。
rs_矩陣 2x2 :32 位元浮點的 2x2 矩陣
rs_ Matrix3x3 :32 位元浮點的 3x3 矩陣
rs_矩陣 4x4 :32 位元浮點的 4x4 矩陣
rs_quaternion :四元數
short2 :兩個 16 位元帶正負號整數
以下的 typedef:短 __attribute__((ext_vector_type(2)))
由兩部 Shorts 組成的向量。這兩部 Shorts 封裝成單一 32 位元欄位,對齊方式為 32 位元。
short3 :三個 16 位元帶正負號整數
以下的 typedef:短 __attribute__((ext_vector_type(3)))
由三部 Shorts 組成的向量。這三個簡短欄位已封裝成單一 64 位元欄位 (採用 64 位元對齊方式)。
short4 :四個 16 位元帶正負號整數
以下的 typedef:短 __attribute__((ext_vector_type(4)))
四部 Shorts 的向量。這四個簡短欄位已封裝成單一 64 位元欄位 (採用 64 位元對齊方式)。
size_t :未簽署的大小類型
一種 typedef:uint64_t 編譯 64 位元時。
一種 typedef:uint32_t 編譯 32 位元時。
未簽署的大小類型。位元數取決於編譯標記。
ssize_t :已簽署大小類型
一種 typedef:int64_t 編譯 64 位元時。
一種 typedef:int32_t 編譯 32 位元時。
已簽署的大小類型。位元數取決於編譯標記。
uchar :8 位元無正負號整數
一種 typedef:uint8_t
8 位元無正負號整數類型。
uchar2 :兩個 8 位元無正負號整數
一種 typedef:uchar __attribute__((ext_vector_type(2)))
兩個 Uchars 的向量。這兩個 Uchar 欄位,封裝成單一 16 位元欄位,對齊方式為 16 位元。
uchar3 :三個 8 位元不帶正負號整數
一種 typedef:uchar __attribute__((ext_vector_type(3)))
三個字元的向量。這三個 uchar 欄位會封裝成單一 32 位元欄位,對齊方式為 32 位元。
uchar4 :四個 8 位元無正負號整數
一種 typedef:uchar __attribute__((ext_vector_type(4)))
四個 uchars 的向量。這四個 Uchar 欄位,封裝成單一 32 位元欄位,對齊方式為 32 位元。
uint :32 位元無正負號整數
一種 typedef:uint32_t
32 位元無正負號整數類型。
uint16_t :16 位元無正負號整數
一種 typedef:無正負號短
16 位元無正負號整數類型。
uint2 :兩個 32 位元不帶正負號整數
一種 typedef:uint __attribute__((ext_vector_type(2)))
兩個色調的向量。這兩個提示會封裝成單一 64 位元欄位 (採用 64 位元對齊方式)。
uint3 :三個 32 位元不帶正負號整數
一種 typedef:uint __attribute__((ext_vector_type(3)))
三個色調的向量。這三個 uint 會封裝成單一 128 位元欄位,該欄位採用 128 位元對齊方式。
uint32_t :32 位元無正負號整數
一種 typedef:未登入。
32 位元無正負號整數類型。
uint4 :四個 32 位元無正負號整數
一種 typedef:uint __attribute__((ext_vector_type(4)))
四個色調的向量。這四個提示會封裝成單一 128 位元欄位,該欄位採用 128 位元對齊方式。
uint64_t :64 位元無正負號整數
uint8_t :8 位元無正負號整數
一種 typedef:未簽署字元
8 位元無正負號整數類型。
ulong :64 位元無正負號整數
一種 typedef:uint64_t
64 位元無正負號整數類型。
ulong2 :兩個 64 位元不帶正負號整數
以下的 typedef:ulong __attribute__((ext_vector_type(2)))
兩個位元組的向量。這兩個加上長的 128 位元欄位是以 128 位元對齊方式封裝。
ulong3 :三個 64 位元不帶正負號整數
以下的 typedef:ulong __attribute__((ext_vector_type(3)))
三個長度的向量。這三個額外欄位,並封裝成單一 256 位元欄位,對齊方式為 256 位元。
ulong4 :四個 64 位元無正負號整數
以下的 typedef:ulong __attribute__((ext_vector_type(4)))
四個長邊的向量。這四個位元組欄位,並封裝成單一 256 位元欄位,對齊方式為 256 位元。
ushort :16 位元無正負號整數
一種 typedef:uint16_t
16 位元無正負號整數類型。
ushort2 :兩個 16 位元無正負號整數
以下的 typedef:ushort __attribute__((ext_vector_type(2)))
由兩部 Shorts 組成的向量。這兩個簡短欄位,封裝成單一 32 位元欄位,對齊方式為 32 位元。
ushort3 :三個 16 位元不帶正負號整數
以下的 typedef:ushort __attribute__((ext_vector_type(3)))
由三部 Shorts 組成的向量。這三個簡短欄位,並封裝成單一 64 位元欄位,對齊方式為 64 位元。
ushort4 :四個 16 位元無正負號整數
以下的 typedef:ushort __attribute__((ext_vector_type(4)))
四個 ushorts 的向量。這四個簡短欄位,封裝成單一 64 位元欄位,而且對齊方式為 64 位元。