RenderScript 數值類型

總覽

純量:

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 來宣告向量。例如 float4int3double2ulong4

如要建立向量常值,請使用向量類型,並在大括號之間括住的值,例如 (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.yzmyVar.gbmyVar.s12myVar.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_ Matrix2x2rs_ Matrix3x3rs_ 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 位元帶正負號整數

一種類型 def:長版 已從 API 級別 21 以上移除

A typedef:在 API 級別 21 中新增

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 矩陣

具有以下欄位的結構:

浮點值 m[4]

2x2 浮點數的浮點矩陣。項目會儲存在位置 [row*2 + col] 的陣列中。

請參閱「Matrix 函式」。

rs_ Matrix3x3 :32 位元浮點的 3x3 矩陣

具有以下欄位的結構:

浮點值 m [9]

3x3 浮點矩陣,項目會儲存在位置 [row*3 + col] 的陣列中。

請參閱「Matrix 函式」。

rs_矩陣 4x4 :32 位元浮點的 4x4 矩陣

具有以下欄位的結構:

浮點值 m [16]

4x4 浮點數的浮點矩陣。項目會儲存在位置 [row*4 + col] 的陣列中。

請參閱「Matrix 函式」。

rs_quaternion :四元數

一種類型 def:float4

代表四元數的浮點值正方形 4x4 矩陣。

請參閱四元數函式

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 位元無正負號整數

一種類型 def:無簽署長版 已從 API 級別 21 以上移除

A typedef:未簽署長短 已在 API 級別 21 中新增

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 位元。