Typy liczbowe RenderScript

Przegląd

Skalary:

RenderScript obsługuje te skalarne typy wartości numerycznych:

8-bitowa 16-bitowa 32-bitowa 64-bitowa
Liczba całkowita: char, int8_t krótki, int16_t int32_t długie, długie, int64_t
Liczba całkowita bez znaku: uchar, uint8_t ushort, uint16_t uint, uint32_t ulong, uint64_t
Liczba zmiennoprzecinkowa: połowa liczba zmiennoprzecinkowa podwójny

Wektory:

RenderScript obsługuje wektory o stałym rozmiarze o długości 2, 3 i 4. Wektory są deklarowane z użyciem wspólnej nazwy typu, po której następuje litera 2, 3 lub 4. Na przykład: float4, int3, double2, ulong4.

Aby utworzyć literały wektorowe, użyj typu wektorowego, a następnie wartości w nawiasach klamrowych, np. (float3){1.0f, 2.0f, 3.0f}.

Dostęp do wpisów wektorowych można uzyskać za pomocą różnych stylów nazewnictwa.

Dostęp do pojedynczych wpisów można uzyskać, wpisując przy nazwie zmiennej kropkę i:

  • litery x, y, z i w,
  • litery r, g, b i a,
  • Litera s lub S, po której następuje indeks liczony od zera.

Na przykład w polu int4 myVar; te wartości są równoważne:
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

Dostęp do wielu wpisów wektora można uzyskać jednocześnie za pomocą identyfikatora, który składa się z wielu liter lub indeksów. Powstały wektor ma rozmiar równy liczbie nazwanych wpisów.

W przykładzie powyżej 2 środkowe wpisy można uzyskać za pomocą właściwości myVar.yz, myVar.gb, myVar.s12 i myVar.S12.

Wpisy nie muszą być obok siebie ani w kolejności rosnącej. Wpisy można nawet powtarzać, o ile nie próbujemy ich przypisać. Nie można też łączyć różnych stylów nazewnictwa.

Oto przykłady tego, co można, a czego nie można:
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

Macierze i kwartyle:

RenderScript obsługuje macierze kwadratowe o stałym rozmiarze 2 x 2, 3 x 3 i 4 x 4. Typy są nazywane rs_matrix2x2, rs_matrix3x3 i rs_matrix4x4. Listę operacji znajdziesz w sekcji Funkcje macierzy.

Kwartiony są też obsługiwane przez rs_quaternion. Listę operacji znajdziesz w sekcji Funkcje Quaterion.

Podsumowanie

Rodzaje
znak2 Dwie 8-bitowe liczby całkowite ze znakiem
znak3 Trzy 8-bitowe liczby całkowite ze znakiem
znak4 Cztery 8-bitowe liczby całkowite ze znakiem
podwójny2 Dwie 64-bitowe liczby pływające
Double3 3 64-bitowe liczby pływające
Double4 4 64-bitowe liczby zmiennoprzecinkowe
liczba zmiennoprzecinkowa2 Dwie 32-bitowe swobody
float3 3 32-bitowe liczby zmiennoprzecinkowe
float4 Cztery 32-bitowe liczby zmiennoprzecinkowe
połowa 16-bitowa wartość zmiennoprzecinkowa
połowa 2 Dwie 16-bitowe liczby pływające
połowa 3 3 16-bitowe liczby pływające
połowa 4 Cztery 16-bitowe liczby zmiennoprzecinkowe
int16_t 16-bitowa liczba całkowita ze znakiem
int2 Dwie 32-bitowe liczby całkowite ze znakiem
int3 Trzy 32-bitowe liczby całkowite ze znakiem
int32_t 32-bitowa liczba całkowita ze znakiem
int4 Cztery 32-bitowe liczby całkowite ze znakiem
int64_t 64-bitowa liczba całkowita ze znakiem
int8_t 8-bitowa liczba całkowita ze znakiem
long2, Dwie 64-bitowe liczby całkowite ze znakiem
długi3 3 64-bitowe liczby całkowite ze znakiem
long4, Cztery 64-bitowe liczby całkowite ze znakiem
rs_matrix2x2 Macierz 2 x 2 32-bitowych liczb zmiennoprzecinkowych
rs_matrix3x3 Matryca 3 x 3 z 32-bitową liczbą zmiennoprzecinkową
rs_matrix4x4 Matryca 4 x 4 32-bitowych liczb zmiennoprzecinkowych
rs_quaternion Kwartion
skrót2 Dwie 16-bitowe liczby całkowite ze znakiem
Short3 3 16-bitowe liczby całkowite ze znakiem
skrót4 Cztery 16-bitowe liczby całkowite ze znakiem
size_t [rozmiar_t] Niepodpisany typ rozmiaru
ssize_t Podpisany rodzaj rozmiaru
uchar 8-bitowa nieoznaczona liczba całkowita
uchar2 Dwie 8-bitowe liczby całkowite bez znaku
uchar3 Trzy 8-bitowe liczby całkowite bez znaku
uchar4 Cztery 8-bitowe liczby całkowite bez znaku
uint, 32-bitowa nieoznaczona liczba całkowita
uint16_t 16-bitowa nieoznaczona liczba całkowita
uint2 Dwie 32-bitowe liczby całkowite bez znaku
uint3 Trzy 32-bitowe liczby całkowite bez znaku
uint32_t 32-bitowa nieoznaczona liczba całkowita
uint4 Cztery 32-bitowe liczby całkowite bez znaku
uint64_t 64-bitowa nieoznaczona liczba całkowita
uint8_t 8-bitowa nieoznaczona liczba całkowita
ulong, 64-bitowa nieoznaczona liczba całkowita
ulong2, Dwie 64-bitowe liczby całkowite bez znaku
ulong3, Trzy 64-bitowe liczby całkowite bez znaku
ulong4 Cztery 64-bitowe liczby całkowite bez znaku
Ushort 16-bitowa nieoznaczona liczba całkowita
ushort2. Dwie 16-bitowe liczby całkowite bez znaku
ushort3. Trzy 16-bitowe liczby całkowite bez znaku
ushort4. Cztery 16-bitowe liczby całkowite bez znaku

Rodzaje

char2 : 2 8-bitowe liczby całkowite ze znakiem

typ definicji: char __attribute__((ext_vector_type(2)))

Wektor składający się z 2 znaków. Te 2 znaki są umieszczone w jednym 16-bitowym polu o 16-bitowym wyrównaniu.

char3 : 3 8-bitowe liczby całkowite ze znakiem

typ definicji: char __attribute__((ext_vector_type(3)))

Wektor składający się z 3 znaków. Te 3 znaki są umieszczone w pojedynczym 32-bitowym polu o wyrównaniu 32-bitowym.

char4 : 4 8-bitowe liczby całkowite ze znakiem

typ definicji: char __attribute__((ext_vector_type(4)))

Wektor składający się z 4 znaków. Te 4 znaki są umieszczone w pojedynczym 32-bitowym polu o 32-bitowym wyrównaniu.

double2 : dwie 64-bitowe liczby zmiennoprzecinkowe

typ definicji: podwójny __attribute__((ext_vector_type(2)))

Wektor dwójki podwójnej precyzji. Te 2 podwójne pola spakowane w pojedyncze 128-bitowe pole o wyrównaniu 128-bitowym.

Double3 : 3 64-bitowe liczby zmiennoprzecinkowe

Typdef: podwójny __attribute__((ext_vector_type(3)))

Wektor 3 podwójnych. Te 3 podwójne pola umieszczone w pojedynczym 256-bitowym polu z wyrównaniem 256-bitowym.

Double4 : 4 64-bitowe liczby zmiennoprzecinkowe

typdef: podwójny __attribute__((ext_vector_type(4)))

Wektor 4 podwójnych. Te 4 podwójne pola umieszczone w pojedynczym 256-bitowym polu z wyrównaniem 256-bitowym.

float2 : 2 32-bitowe liczby zmiennoprzecinkowe

Parametr typedef: float __attribute__((ext_vector_type(2)))

Wektor dwóch swobodnych. Te 2 wartości zmiennoprzecinkowe są uporządkowane w pojedynczym 64-bitowym polu o wyrównaniu 64-bitowym.

Wektor dwóch swobodnych. Te 2 wartości zmiennoprzecinkowe są uporządkowane w pojedynczym 64-bitowym polu o wyrównaniu 64-bitowym.

float3 : 3 32-bitowe liczby zmiennoprzecinkowe

Parametr typedef: float __attribute__((ext_vector_type(3)))

Wektor 3 pływaków. Te 3 wartości zmiennoprzecinkowe są uporządkowane w pojedynczym 128-bitowym polu o wyrównaniu 128-bitowym.

float4 : 4 32-bitowe liczby zmiennoprzecinkowe

Parametr typedef: float __attribute__((ext_vector_type(4)))

Wektor typu 4 zmiennoprzecinkowych. Te 4 wartości zmiennoprzecinkowe są uporządkowane w pojedynczym 128-bitowym polu o wyrównaniu 128-bitowym.

half: 16-bitowa wartość zmiennoprzecinkowa

Typedef: __fp16 Dodano w poziomie interfejsu API 23.

16-bitowa wartość zmiennoprzecinkowa.

połowa 2: 2 16-bitowe liczby zmiennoprzecinkowe

Typedef: połowa atrybutu __attribute__((ext_vector_type(2))) Dodano w interfejsie API poziomu 23

Wersja wektorowa typu półzmiennoprzecinkowego. Zapewnia 2 połowa pól uporządkowane w pojedynczym polu 32-bitowym z wyrównaniem 32-bitowym.

połowa 3: 3 16-bitowe liczby zmiennoprzecinkowe

Typedef: połowa atrybutu __attribute__((ext_vector_type(3))) Dodano w poziomie interfejsu API 23

Wersja wektorowa typu półzmiennoprzecinkowego. Udostępnia 3 połowę pól w pojedynczym polu 64-bitowym z wyrównaniem 64-bitowym.

połowa 4: 4 16-bitowe liczby zmiennoprzecinkowe

Typedef: połowa atrybutu __attribute__((ext_vector_type(4))) Dodano w poziomie interfejsu API 23.

Wersja wektorowa typu półzmiennoprzecinkowego. Udostępnia 4 połowę pól w pojedynczym polu 64-bitowym z wyrównaniem 64-bitowym.

int16_t : 16-bitowa liczba całkowita ze znakiem

definicja typu: krótki

16-bitowy typ liczby całkowitej ze znakiem.

int2 : 2 32-bitowe liczby całkowite ze znakiem

Parametr typedef: int __attribute__((ext_vector_type(2)))

Wektor z dwoma liczbami całkowitymi. Te 2 wartości int są umieszczone w pojedynczym 64-bitowym polu z 64-bitowym wyrównaniem.

int3 : 3 32-bitowe liczby całkowite ze znakiem

Parametr typedef: int __attribute__((ext_vector_type(3)))

Wektor składający się z trzech liczb całkowitych. Te 3 wartości int są umieszczone w pojedynczym 128-bitowym polu o wyrównaniu 128-bitowym.

int32_t : 32-bitowa liczba całkowita ze znakiem

Typ definicji: int

32-bitowy typ liczby całkowitej ze znakiem.

int4 : 4 32-bitowe liczby całkowite ze znakiem

Parametr typedef: int __attribute__((ext_vector_type(4)))

Wektor o wartości 4 intów. Te 2 cztery elementy są umieszczone w pojedynczym 128-bitowym polu o wyrównaniu 128-bitowym.

int64_t : 64-bitowa liczba całkowita ze znakiem

Element typedef: long został usunięty z interfejsu API na poziomie 21 lub wyższym

Element typedef: long Dodano w poziomie interfejsu API 21

64-bitowy typ liczby całkowitej ze znakiem.

int8_t : 8-bitowa liczba całkowita ze znakiem

Typ definicji: char

8-bitowy typ liczby całkowitej ze znakiem.

long2 : 2 64-bitowe liczby całkowite ze znakiem

typdefinicji: długi __attribute__((ext_vector_type(2)))

Wektor o dwóch długościach. Te 2 klucze są zgrupowane w jedno 128-bitowe pole o wyrównaniu 128-bitowym.

long3 : 3 64-bitowe liczby całkowite ze znakiem

Typdef: długi __attribute__((ext_vector_type(3)))

Wektor o długości 3 długości. Te 3 wymiary są uporządkowane w pojedynczym 256-bitowym polu z 256-bitowym wyrównaniem.

long4 : 4 64-bitowe liczby całkowite ze znakiem

typ definicji: długi __attribute__((ext_vector_type(4)))

Wektor o 4 długościach. Te 4 karty są umieszczone w pojedynczym 256-bitowym polu z 256-bitowym wyrównaniem.

rs_matrix2x2 : macierz 2 x 2 32-bitowych liczb zmiennoprzecinkowych

strukturę z tymi polami:     

liczba zmiennoprzecinkowa m[4]

Kwadratowa macierz 2 x 2 liczb zmiennoprzecinkowych. Wpisy są przechowywane w tablicy w lokalizacji [wiersz*2 + kolumna].

Zobacz Funkcje macierzy.

rs_matrix3x3 : macierz 3 x 3 32-bitowych liczb zmiennoprzecinkowych

strukturę z tymi polami:     

liczba zmiennoprzecinkowa m[9]

Kwadratowa macierz 3 x 3 liczb zmiennoprzecinkowych. Wpisy są przechowywane w tablicy w lokalizacji [wiersz*3 + kolumna].

Zobacz Funkcje macierzy.

rs_matrix4x4 : macierz 4 x 4 32-bitowych liczb zmiennoprzecinkowych

strukturę z tymi polami:     

liczba zmiennoprzecinkowa m[16]

Kwadratowa macierz 4 x 4 liczb zmiennoprzecinkowych. Wpisy są przechowywane w tablicy w lokalizacji [wiersz*4 + kolumna].

Zobacz Funkcje macierzy.

rs_quaternion : Quaternion

Typ definicji: float4

Kwadratowa macierz 4 x 4 liczb zmiennoprzecinkowych reprezentująca kwaternion.

Zobacz sekwencje funkcji kwartyli.

short2 : 2 16-bitowe liczby całkowite ze znakiem

definicja typu: krótki __attribute__((ext_vector_type(2)))

Wektor przedstawiający 2 filmy Short. Te 2 Shorts są umieszczone w pojedynczym 32-bitowym polu o 32-bitowym wyrównaniu.

short3 : 3 16-bitowe liczby całkowite ze znakiem

definicja typu: krótki __attribute__((ext_vector_type(3)))

Wektor przedstawiający 3 filmy Short. Te 3 krótkie pola umieszczone w pojedynczym 64-bitowym polu o wyrównaniu 64-bitowym.

short4 : 4 16-bitowe liczby całkowite ze znakiem

definicja typu: krótki __attribute__((ext_vector_type(4)))

Wektor przedstawiający 4 filmy Short. Te 4 krótkie pola umieszczone w pojedynczym 64-bitowym polu o wyrównaniu 64-bitowym.

size_t : niepodpisany rodzaj rozmiaru

Atrybut typedef: uint64_t Podczas kompilowania do 64 bitów.

Atrybut typedef: uint32_t Podczas kompilowania do 32 bitów.

Niepodpisany typ rozmiaru. Liczba bitów zależy od flag kompilacji.

ssize_t : podpisany rodzaj rozmiaru

Atrybut typedef: int64_t Podczas kompilowania do 64 bitów.

Atrybut typedef: int32_t Podczas kompilowania do 32 bitów.

Podpisany rodzaj rozmiaru. Liczba bitów zależy od flag kompilacji.

uchar : 8-bitowa nieoznaczona liczba całkowita

Typ definicji: uint8_t

8-bitowy typ liczby całkowitej bez znaku.

uchar2 : 2 8-bitowe nieoznaczone liczby całkowite

Parametr typedef: uchar __attribute__((ext_vector_type(2)))

Wektor przedstawiający 2 uchory. Te 2 pola Uchar upakowane w jedno 16-bitowe pole o 16-bitowym wyrównaniu.

uchar3 : 3 8-bitowe nieoznaczone liczby całkowite

Parametr typedef: uchar __attribute__((ext_vector_type(3)))

Wektor przedstawiający 3 uchary. Te 3 pola Uchar upakowane w pojedyncze 32-bitowe pole o wyrównaniu 32-bitowym.

uchar4 : 4 8-bitowe nieoznaczone liczby całkowite

Parametr typedef: uchar __attribute__((ext_vector_type(4)))

Wektor przedstawiający 4 uchory. Te 4 pola Uchar upakowane w jedno 32-bitowe pole o 32-bitowym wyrównaniu.

uint : 32-bitowa liczba całkowita bez znaku

Typ definicji: uint32_t

32-bitowy typ liczby całkowitej bez znaku.

uint16_t : 16-bitowa nieoznaczona liczba całkowita

Typdef: unSign (skrócony)

16-bitowy typ liczby całkowitej bez znaku.

uint2 : 2 32-bitowe liczby całkowite bez znaku

Typdefinicja: uint __attribute__((ext_vector_type(2)))

Wektor 2 uintów. Te 2 uiny są uporządkowane w pojedynczym polu 64-bitowym o wyrównaniu 64-bitowym.

uint3 : 3 32-bitowe liczby całkowite bez znaku

Typdefinicja: uint __attribute__((ext_vector_type(3)))

Wektor 3 uinitów. Te 3 uinty są uporządkowane w pojedynczym 128-bitowym polu o wyrównaniu 128-bitowym.

uint32_t : 32-bitowa liczba całkowita bez znaku

typ: unSign (niepodpisana int)

32-bitowy typ liczby całkowitej bez znaku.

uint4 : 4 32-bitowe liczby całkowite bez znaku

Typdefinicja: uint __attribute__((ext_vector_type(4)))

Wektor 4 uintów. Te 4 uinty są uporządkowane w pojedynczym 128-bitowym polu o wyrównaniu 128-bitowym.

uint64_t : 64-bitowa nieoznaczona liczba całkowita

Element typedef: unsign long usunięty z interfejsu API na poziomie 21 lub wyższym

Element typedef: unsign long dodany w poziomie interfejsu API 21

64-bitowy typ liczby całkowitej bez znaku.

uint8_t : 8-bitowa nieoznaczona liczba całkowita

typ: unsign char

8-bitowy typ liczby całkowitej bez znaku.

ulong : 64-bitowa nieoznaczona liczba całkowita

Typ definicji: uint64_t

64-bitowy typ liczby całkowitej bez znaku.

ulong2 : 2 64-bitowe liczby całkowite bez znaku

Typdefinicja: ulong __attribute__((ext_vector_type(2)))

Wektor o dwóch ulongach. Te 2 jednostki ulong są spakowane w jedno 128-bitowe pole o wyrównaniu 128-bitowym.

ulong3 : 3 64-bitowe nieoznaczone liczby całkowite

Typdefinicja: ulong __attribute__((ext_vector_type(3)))

Wektor o wartości 3 ulongów. Te 3 pola typu Ulong są uporządkowane w pojedyncze 256-bitowe pole o wyrównaniu 256-bitowym.

ulong4 : 4 64-bitowe nieoznaczone liczby całkowite

Parametr typedef: ulong __attribute__((ext_vector_type(4)))

Wektor o 4 ulongach. Te 4 pola typu Ulong są uporządkowane w pojedyncze 256-bitowe pole o wyrównaniu 256-bitowym.

ushort : 16-bitowa liczba całkowita bez znaku

Typ definicji: uint16_t

16-bitowy typ liczby całkowitej bez znaku.

ushort2 : 2 16-bitowe liczby całkowite bez znaku

Typdefinicja: ushort __attribute__((ext_vector_type(2)))

Wektor z 2 skrótami ushort. Te 2 pola UNS z umieszczonym w pojedynczym polu 32-bitowym o wyrównaniu 32-bitowym.

ushort3 : 3 16-bitowe nieoznaczone liczby całkowite

Typdefinicja: ushort __attribute__((ext_vector_type(3)))

Wektor składający się z 3 skrótów ushort. Te 3 pola ushort uporządkowane w jedno 64-bitowe pole o 64-bitowym wyrównaniu.

ushort4 : 4 16-bitowe nieoznaczone liczby całkowite

Typdefinicja: ushort __attribute__((ext_vector_type(4)))

Wektor z 4 skrótami ushort. Te 4 pola ushort uporządkowane w jedno 64-bitowe pole o 64-bitowym wyrównaniu.