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.