Dokumentacja interfejsu RenderScript Runtime API

Przegląd

RenderScript to wydajne środowisko wykonawcze, które umożliwia operacje obliczeniowe na poziomie natywnym. Kod RenderScript jest kompilowany na urządzeniach w czasie działania, co zapewnia niezależność od platformy.

W tej dokumentacji znajdziesz opis interfejsów API środowiska wykonawczego RenderScript, których możesz używać do zapisywania kodu RenderScript w języku C99. Pliki nagłówka Compute RenderScript są dołączane automatycznie.

Aby użyć RenderScript, musisz użyć opisanych tutaj interfejsów API środowiska wykonawczego RenderScript, a także interfejsów API platformy RenderScript. Dokumentację dotyczącą interfejsów API platformy Android znajdziesz w dokumentacji pakietu android.renderscript.

Więcej informacji o tworzeniu kodu za pomocą RenderScriptu oraz o wzajemnych interakcjach interfejsu środowiska wykonawczego z interfejsami API platformy Android znajdziesz w przewodniku dla programistów RenderScript i przykładach RenderScript.

Typy liczbowe

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.

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

Typy obiektów

Opisane poniżej typy służą do manipulowania obiektami RenderScript, takimi jak alokacje, próbki, elementy i skrypty. Większość z nich jest tworzona przy użyciu interfejsów API Java RenderScript.

Rodzaje
rs_allocation Obsługa alokacji
rs_allocation_cubemap_face, Wyliczenie do wyboru tarcz mapy sześciennej
rs_allocation_usage_type Pole bitowe do określania sposobu użycia alokacji
rs_data_kind Rodzaj danych elementu
rs_data_type Podstawowy typ danych elementu
rs_element, Uchwyt do elementu
rs_sampler Użyj nicka do próbki
rs_sampler_value Wartość zawijania próbek (T)
rs_script, Uchwyt do skryptu
rs_type Użyj uchwytu do typu
rs_yuv_format Format YUV

Funkcje konwersji

Poniższe funkcje konwertują wartości wektorów liczbowych na inne lub z jednej reprezentacji kolorów na drugi.

Funkcje
dokonuj konwersji Przekonwertuj wektory liczbowe
rsPackColorTo8888 Utwórz RGBA uchar4 na podstawie liczb zmiennoprzecinkowych
rsUnpackColor8888 Tworzenie modelu RGBA typu float4 z pliku uchar4
rsYuvToRGBA, Przekonwertuj wartość YUV na RGBA

Stałe i funkcje matematyczne

Poniższe funkcje matematyczne można stosować do skalarów i wektorów. Gdy zwracana wartość jest stosowana do wektorów, jest wektorem funkcji stosowanej do każdego wpisu danych wejściowych.

Przykład:
float3 a, b;
// The following call sets
// a.x to sin(b.x),
// a.y to sin(b.y), and
// a.z to sin(b.z).
a = sin(b);

W sekcji Funkcje matematyczne wektorowe znajdziesz funkcje takie jak distance() i length(), które interpretują dane wejściowe jako pojedynczy wektor w przestrzeni n-wymiarowej.

Na dokładność działań matematycznych na 32-bitowych liczbach zmiennoprzecinkowych wpływają wartości pragmas rs_fp_relaxed i rs_fp_full. W parametrze rs_fp_relaxed wartości nienormalne mogą być opróżniane do zera i można je zaokrąglać do zera. Dla porównania parametr rs_fp_full wymaga prawidłowej obsługi wartości podrzędnych, tj. mniejszych niż 1.17549435e-38f. Parametr rs_fp_rull wymaga też zaokrąglania do najbliższej z parzystymi wartościami.

Za pomocą wariantów typowych funkcji matematycznych można osiągnąć różne zmiany w zakresie precyzji i szybkości. Funkcje, których nazwy zaczynają się od

  • natywne_: mogą mieć niestandardowe implementacje sprzętowe o niższej dokładności. Dodatkowo wartości nienormalne mogą być opróżniane do zera, można zaokrąglać do zera, a dane wejściowe NaN i nieskończoności mogą nie być prawidłowo obsługiwane.
  • połowy_: umożliwia wykonywanie wewnętrznych obliczeń przy użyciu 16-bitowych liczb zmiennoprzecinkowych. Dodatkowo wartości podrzędne mogą być opróżniane do zera i można je zaokrąglać do zera.

Stałe
M_1_PI 1 / pi w postaci 32-bitowej liczby zmiennoprzecinkowej.
M_2_PI 2 / pi w postaci 32-bitowej liczby zmiennoprzecinkowej.
M_2_PIERW.PI 2 / sqrt(pi) w postaci 32-bitowej liczby zmiennoprzecinkowej.
M_E e, w postaci 32-bitowej liczby zmiennoprzecinkowej.
M_LN10 log_e(10), w postaci 32-bitowej liczby zmiennoprzecinkowej.
M_LN2 log_e(2), w postaci 32-bitowej liczby zmiennoprzecinkowej.
M_LOG10E log_10(e), jako 32-bitowa liczba zmiennoprzecinkowa
M_LOG2E log_2(e), jako 32-bitowa liczba zmiennoprzecinkowa,
M_PI pi w postaci 32-bitowej liczby zmiennoprzecinkowej.
M_PI_2 pi / 2 w postaci 32-bitowej liczby zmiennoprzecinkowej.
M_PI_4 pi / 4 w postaci 32-bitowej liczby zmiennoprzecinkowej.
M_PIERWIASTEK1_2 1 / sqrt(2), w postaci 32-bitowej liczby zmiennoprzecinkowej.
PIERWIASTEK_M_PIERWIASTEK sqrt(2), w postaci 32-bitowej liczby zmiennoprzecinkowej.
Funkcje
absolut Wartość bezwzględna liczby całkowitej
akos Odwrotny cosinus
acosh Odwrotny cosinus hiperboliczny
acospi Odwrotny cosinus podzielony przez pi
asin Odwrotny sinus
asinh Odwrotny sinus hiperboliczny
asinpi Odwrotny sinus podzielony przez pi
atan Odwrotny tangens
atan2 Odwrotny tangens współczynnika
atan2pi Odwrotny tangens współczynnika podzielony przez pi
atanh Odwrotny tangens hiperboliczny
Atanpi Odwrotny tangens podzielony przez pi
cbrt Pierwiastek sześcienny
ceil Najmniejsza liczba całkowita, nie mniejsza od wartości
ograniczyć Ogranicz wartość do zakresu
clz Liczba pierwszych 0 bitów
copysign. Kopiuje znak liczby do innej
Cos Cosinus
cosh Cosinus hiperboliczny
Cospi Cosinus liczby pomnożonej przez pi
stopnie Przekształca radiany na stopnie
erf Funkcja błędu matematycznego
erfc Uzupełniająca funkcja matematyczna błędu
exp e podniesiona do liczby
exp10 10 podniesiona do liczby
wyr2 2 podniesiona do liczby
expm1 e podniesiona do liczby minus jeden
pracowników Wartość bezwzględna liczby zmiennoprzecinkowej
FDim Różnica dodatnia między 2 wartościami
piętro Najmniejsza liczba całkowita nie większa od wartości
FMA Pomnóż i dodaj
FMax Maksymalnie dwie liczby zmiennoprzecinkowe
min Co najmniej dwie liczby zmiennoprzecinkowe
Fmod Modulo
frakt Dodatnia część ułamkowa
frexp, Binarna mantysa i wykładnik
pół_recip Wartość odwrotna obliczona z dokładnością do 16 bitów
half_rsqrt Odwrotność pierwiastka kwadratowego obliczony z dokładnością 16-bitową
half_sqrt Pierwiastek kwadratowy obliczony z 16-bitową precyzją
hipot przeciwprostokątna
ilogb Podstawa dwóch wykładników
lekcja ldexp Tworzy punkt zmiennoprzecinkowy na podstawie mantysy i wykładnika
Lgamma Logarytm naturalny funkcji gamma
dziennik Logarytm naturalny
log10 Logarytm dziesiętny
log1p Logarytm naturalny wartości plus 1
log2 Logarytm dziesiętny
logb Podstawa dwóch wykładników
szalony Pomnóż i dodaj
maks. Wartość maksymalna
min Wartość minimalna
mieszanka Łączy 2 wartości
modf (modf) Składniki całkowite i ułamkowe
nan To nie jest liczba
nan_połowa To nie jest liczba
natywne_acos Przybliżony odwrotny cosinus
native_acosh Przybliżony odwrotny odwrotny cosinus hiperboliczny
native_acospi Przybliżony odwrotny cosinus podzielony przez pi
native_asin Przybliżony odwrotny sinus
native_asinh Przybliżony odwrotny odwrotny sinus hiperboliczny
natywny_asinpi Przybliżony odwrotny sinus podzielony przez pi
native_atan Przybliżony odwrotny tangens
natywny_atan2 Przybliżony odwrotny tangens współczynnika
native_atan2pi Przybliżony odwrotny tangens współczynnika podzielony przez pi
native_atanh Przybliżony odwrotny tangens hiperboliczny
natywny_atanpi Przybliżony odwrotny tangens podzielony przez pi
natywny_cbrt Przybliżony pierwiastek sześcienny
native_cos Przybliżony cosinus
natywna_cosh Przybliżony cosinus hipeboliczny
native_cospi Przybliżony cosinus liczby pomnożonej przez pi
natywna_divide Podział przybliżony
native_exp Przybliżona liczba e podniesiona do określonej liczby
native_exp10 Podniesiona do określonej liczby około 10
natywna_wyrażenia2 Podniesiono ok. 2 do określonej liczby
native_expm1 Przybliżona liczba e podniesiona do liczby minus jeden
native_hypot Przybliżona przeciwprostokątna
native_log Przybliżony logarytm naturalny
native_log10 Logarytm dziesiętny w przybliżeniu
native_log1p Przybliżony logarytm naturalny wartości plus 1
native_log2 Przybliżony logarytm dziesiętny
natywna_powr, Przybliżona podstawa dodatnia podniesiona do wykładnika
natywny_recip Przybliżona liczba odwrotna
native_rootn Przybliżony n-ty pierwiastek
native_rsqrt Przybliżony odwrotność pierwiastka kwadratowego
natywny_sin Przybliżony sinus
native_sincos Przybliżony sinus i cosinus
native_sinh Przybliżony sinus hiperboliczny
natywny_sinpi Przybliżony sinus liczby pomnożonej przez pi
native_sqrt Przybliżony pierwiastek kwadratowy
natywny_jasnobrązowy Przybliżona tangens
natywny_tanh Przybliżony tangens hiperboliczny
natywna_tanpi Przybliżony tangens liczby pomnożonej przez pi
nextafter Następna liczba zmiennoprzecinkowa
pow Podstawa podniesiona do wykładnika
pown Podstawa podniesiona do wykładnika całkowitej
powr, Dodatnia podstawa podniesiona do wykładnika
radiany Konwertuje stopnie na radiany
reszta Pozostała część oddziału
remquo Reszta i iloraz dzielenia
Rint Zaokrąglaj do parzystych
rootn Pierwiastek stopnia n
round Zaokrąglaj od zera
rsRand, Pseudolosowa liczba
rsqrt Odwrotność pierwiastka kwadratowego
podpisz Znak wartości
sin Sinus
Sincos Sinus i cosinus
Sinh Sinus hiperboliczny
Sinpi Sinus liczby pomnożonej przez pi
sqrt Pierwiastek kwadratowy
krok Wartość 0, jeśli jest mniejsza od wartości, lub 0 w przeciwnym razie
jasnobrązowy Tangens
tanh Tangens hiperboliczny
tanpi, Tangens liczby pomnożonej przez pi
tgamma Funkcja gamma
obcinanie Przycina liczbę zmiennoprzecinkową

Wektorowe funkcje matematyczne

Te funkcje interpretują argumenty wejściowe jako reprezentacje wektorów w przestrzeni n-wymiarowej.

Na dokładność działań matematycznych na 32-bitowych liczbach zmiennoprzecinkowych wpływają wartości pragmas rs_fp_relaxed i rs_fp_full. Szczegółowe informacje znajdziesz w sekcji Stałe i funkcje matematyczne.

Za pomocą wariantów typowych funkcji matematycznych można osiągnąć różne zmiany w zakresie precyzji i szybkości. Funkcje, których nazwy zaczynają się od

  • natywne_: mogą mieć niestandardowe implementacje sprzętowe o niższej dokładności. Dodatkowo wartości nienormalne mogą być opróżniane do zera, można zaokrąglać do zera, a dane wejściowe NaN i nieskończoności mogą nie być prawidłowo obsługiwane.
  • fast_: umożliwia wykonywanie wewnętrznych obliczeń przy użyciu 16-bitowych liczb zmiennoprzecinkowych. Dodatkowo wartości podrzędne mogą być opróżniane do zera i można je zaokrąglać do zera.

Funkcje
krzyżyk Iloczyn krzyżowy 2 wektorów
odległość Odległość między dwoma punktami
kropka Iloczyn skalarny dwóch wektorów
szybka_odległość Przybliżona odległość między dwoma punktami
szybka_długość Przybliżona długość wektora
fast_normalize Przybliżona znormalizowana wektor
length (długość) Długość wektora
odległość_natywna Przybliżona odległość między dwoma punktami
długość_natywnej Przybliżona długość wektora
native_normalize Normalizuj wektor w przybliżeniu
normalizacja Normalizuj wektor

Funkcje macierzy

Te funkcje umożliwiają obsługę macierzy kwadratowych rangi 2 x 2, 3 x 3 i 4 x 4. Są one szczególnie przydatne w przypadku przekształceń graficznych i są zgodne z OpenGL.

W wierszach i kolumnach używamy indeksu liczonego od zera. Np. ostatni element w tablicy rs_matrix4x4 znajduje się w miejscu (3, 3).

RenderScript wykorzystuje macierze dużych kolumn i wektory kolumnowe. Przekształcanie wektora odbywa się po jego pomnożeniu, np. (matrix * vector), zgodnie z funkcją rsMatrixMultiply().

Aby utworzyć macierz, która przeprowadza 2 przekształcenia naraz, należy pomnożyć te 2 macierze, przy czym pierwsza z nich będzie właściwym argumentem. Aby np. utworzyć macierz przekształceń, która stosuje przekształcenie s1, a następnie s2, wywołaj rsMatrixLoadMultiply(&combined, &s2, &s1). Pochodzi z pola s2 * (s1 * v), czyli (s2 * s1) * v.

Istnieją 2 rodzaje funkcji do tworzenia macierzy transformacji: rsMatrixLoadTransformation i rsMatrixTransformation. W poprzednim argumencie macierz przekształceń jest przechowywana w pierwszym argumencie. Ten ostatni zmienia dotychczasową macierz przekształceń tak, aby nowe przekształcenie odbywało się jako pierwsze. Jeśli np. wywołasz funkcję rsMatrixTranslate() w macierzy, która już skaluje, otrzymana macierz po zastosowaniu do wektora najpierw wykona translację, a następnie skalowanie.

Funkcje
rsExtractFrustumPlanes Obliczanie płaszczyzn ostrych
rsIsSphereInFrustum Sprawdza, czy kula znajduje się w płaszczyznach rozluźniających
rsMatrixGet Pobierz 1 element
rsMatrixInverse. Odwraca macierz w miejscu
rsMatrixInverseTranspose Odwraca i transponuje macierz w miejscu
rsMatrixLoad Wczytywanie lub kopiowanie macierzy
rsMatrixLoadFrustum Wczytaj macierz projekcji frustum
rsMatrixLoadIdentity Wczytywanie macierzy tożsamości
rsMatrixLoadMultiply Pomnóż 2 macierze
rsMatrixLoadOrtho, Wczytaj macierz odwzorowania ortograficznego
rsMatrixLoadPerspective, Wczytywanie macierzy projekcji perspektywy
rsMatrixLoadDuration Wczytaj macierz rotacji
rsMatrixLoadScale Wczytaj macierz skalowania
rsMatrixLoadTranslate Wczytaj macierz translacji
rsMatrixMultiply Pomnóż macierz przez wektor lub inną macierz
rsMatrixRotacja Zastosuj rotację do macierzy przekształceń
rsMatrixScale. Zastosuj skalowanie do macierzy transformacji
rsMatrixSet Ustawianie jednego elementu
rsMatrixTranslate Zastosuj translację do macierzy przekształceń
rsMatrixTranspose Transponuj miejsce macierzy

Funkcje kwartyli

Poniższe funkcje manipulowają kwantionami.

Funkcje
rsQuaternionAdd Dodaj dwie kwaternony
rsQuaternionConjugate Sprzęgaj kwaternion
rsQuaternionDot Iloczyn skalarny dwóch kwaternionów
rsQuaternionGetMatrixUnit Pobierz macierz rotacji z kwaternionu
rsQuaternionLoadBalance Utwórz kwaternion rotacji
rsQuaternionLoadBalanceUnit Kwartionek reprezentujący obrót wokół dowolnego wektora jednostkowego
rsQuaternionMultiply Pomnóż kwartion przez skalar lub inny kwionion
rsQuaternionNormalize Normalizuj kwaternion
rsQuaternionSet, Utwórz kwaternion
rsQuaternionSlerp Sferyczna interpolacja liniowa między 2 kwaternionami

Funkcje aktualizacji atomowej

Aby zaktualizować wartości udostępniane w wielu wątkach, użyj poniższych funkcji. Zapewniają one aktualizację atomową wartości, co oznacza, że pamięć odczyty, aktualizacje i zapis są wykonywane we właściwej kolejności.

Te funkcje są wolniejsze od ich nieatomowych odpowiedników, więc używaj ich tylko wtedy, gdy potrzebna jest synchronizacja.

Pamiętaj, że w kodzie RenderScript Twój kod może działać w oddzielnych wątkach, nawet jeśli nie został on utworzony przez Ciebie. Środowisko wykonawcze RenderScript bardzo często dzieli wykonanie jednego jądra na wiele wątków. Globalne aktualizowanie musi być przeprowadzane za pomocą funkcji niepodzielnych. Jeśli to możliwe, zmień algorytm tak, aby całkowicie ich unikać.

Funkcje
rsAtomicAdd, Dodawanie bezpieczne w wątku
rsAtomicAnd Bezpieczne do użycia w wątkach
rsAtomicCas, Porównywanie i konfigurowanie w wątku
rsAtomicDec Zmniejszanie bezpieczne w wątku
rsAtomicInc, Zwiększenie bezpieczeństwa w wątku
rsAtomicMax, Maksymalna dozwolony w wątku
rsAtomicMin, Minimalna możliwa do zastosowania w wątku
rsAtomicOr, Bezpieczne w wątku bitowe lub
rsAtomicSub, Odejmowanie w wątkach
rsAtomicXor Tylko bitowe zabezpieczenia w wątkach lub

Funkcje i typy czasu

Opisane poniżej funkcje pozwalają określić bieżącą godzinę i godzinę działania systemu. Nie zaleca się wywoływania tych funkcji w jądrze.

Rodzaje
rs_time_t Sekundy od 1 stycznia 1970 r.
rs_tm Struktura daty i godziny
Funkcje
rsGetDt Czas, który upłynął od ostatniego połączenia
rsLocaltime, Konwertuj na czas lokalny
rsTime, Sekundy od 1 stycznia 1970 r.
rsUptimeMillis Czas działania systemu w milisekundach
rsUptimeNanos Czas działania systemu w nanosekundach

Funkcje tworzenia alokacji

Poniższe funkcje mogą służyć do tworzenia przydziałów na podstawie skryptu.

Te funkcje można wywoływać bezpośrednio lub pośrednio z funkcji niewprowadzonej. Jeśli jakaś ścieżka przepływu kontroli może skutkować wywołaniem tych funkcji przez funkcję jądra RenderScript, zostanie wygenerowany błąd kompilatora.

Funkcje
rsCreateAllocation, Utwórz obiekt rs_allocation danego typu.
rsCreateElement. Tworzy obiekt rs_element określonego typu danych
rsCreatePixelElement. Tworzy obiekt rs_element określonego typu i rodzaju danych
rsCreateType, Tworzy obiekt rs_type z określonymi atrybutami Element i kształt
rsCreateVectorElement. Tworzy obiekt rs_element o określonym typie danych i szerokości wektora

Funkcje dostępu do danych alokacji

Opisane poniżej funkcje służą do pobierania i ustawiania komórek, które składają się na alokację.

  • Dostęp do poszczególnych komórek można uzyskać za pomocą funkcji rsGetElementAt* i rsSetElementAt.
  • Za pomocą funkcji rsAllocationCopy* i rsAllocationV* możesz kopiować wiele komórek.
  • Aby pobierać wartości za pomocą próbnika, użyj rsSample.
Funkcje rsGetElementAt i rsSetElement* mają nieco błędne nazwy. Nie pobierają ani nie ustawiają elementów, które są podobne do typów danych. Pobierają lub ustawiają komórki. Można ich wyobrazić sobie jako rsGetCellAt i rsSetCellAt.

Funkcje
rsAllocationCopy1DRange, Kopiuj następujące po sobie komórki między przydziałami
rsAllocationCopy2DRange, Kopiuj prostokątny region komórek między przydziałami
rsAllocationVLoadX, Pobierz wektor z przydziału skalarów
rsAllocationVStoreX, Zapisuj wektor w alokacji skalarnych
rsGetElementAt Zwracanie komórki z alokacji
rsGetElementAtYuv_uchar_U Pobierz komponent U w przydziału jednostek YUV
rsGetElementAtYuv_uchar_V (tylko w języku angielskim) Pobierz komponent V przydziału jednostek YUV
rsGetElementAtYuv_uchar_Y (w języku angielskim) Pobierz komponent Y przydziału jednostek YUV
rsSample, Próbkowanie wartości z przydziału tekstury
rsSetElementAt, Ustaw komórkę w alokacji

Funkcje cech obiektów

Opisane poniżej funkcje mogą służyć do wysyłania zapytań o cechy obiektów Alokacji, Elementu lub Samplera. Obiekty te są tworzone w języku Java. Nie można ich tworzyć ze skryptu.

Przydziały:

Alokacje to podstawowa metoda używana do przekazywania danych do i z jądra RenderScript.

Jest to uporządkowany zbiór komórek, którego można używać do przechowywania map bitowych, tekstur, dowolnych punktów danych itp.

Ten zbiór komórek może mieć wiele wymiarów (X, Y, Z, tablica0, tablica1, tablica2, tablica3), twarze (mapy sześcienne) oraz poziom szczegółów (do mipmappingu).

Szczegółowe informacje o tworzeniu przydziałów znajdziesz na stronie android.renderscript.Allocation.

Elementy:

Termin „element” w RenderScript jest używany nieco niejednoznacznie jako informacje o typie zarówno dla komórek alokacji, jak i wystąpienia tego typu. Na przykład:

  • rs_element to uchwyt specyfikacji typu,
  • W funkcjach takich jak rsGetElementAt() „element” oznacza wystąpienie typu, np. komórkę alokacji.

Poniższe funkcje umożliwiają wysyłanie zapytań o cechy specyfikacji typu.

Element może określać proste typy danych znane z C, np. liczbę całkowitą, liczbę zmiennoprzecinkową lub wartość logiczną. Może też określić uchwyt obiektu RenderScript. Listę podstawowych typów znajdziesz w sekcji rs_data_type.

Elementy mogą określać wersje podstawowych typów wektorowych o stałym rozmiarze (o rozmiarze 2, 3 lub 4). Elementy można grupować w elementy złożone, tworząc odpowiednik definicji struktur C.

Elementy mogą też mieć rodzaj, czyli informacje semantyczne używane do interpretacji danych piksela. Zobacz rs_data_kind.

Podczas tworzenia alokacji wspólnych elementów możesz używać jednego z wielu wstępnie zdefiniowanych elementów, np. F32_2.

Aby tworzyć elementy złożone, użyj klasy Java Element.Builder.

Sample:

Obiekty próbkowania określają, jak alokacje mogą być odczytywane jako struktura w jądrze. Zobacz android.renderscript.S.

Funkcje
rsAllocationGetDimFaces, Obecność więcej niż jednej twarzy
rsAllocationGetDimLOD, Obecność poziomów szczegółowości
rsAllocationGetDimX, Rozmiar wymiaru X
rsAllocationGetDimY, Rozmiar wymiaru Y
rsAllocationGetDimZ, Rozmiar wymiaru Z
rsAllocationGetElement, Pobieranie obiektu opisującego komórkę przydziału
rsClearObject Zwalnianie obiektu
rsElementGetBytesSize Rozmiar elementu
rsElementGetDataKind Rodzaj elementu
rsElementGetDataType Typ danych elementu
rsElementGetSubElement Element podrzędny elementu złożonego
rsElementGetSubElementTrackSize Rozmiar tablicy elementu podrzędnego elementu złożonego
rsElementGetSubElementCount Liczba elementów podrzędnych
rsElementGetSubElementName Nazwa podelementu
rsElementGetSubElementNameLength Długość nazwy podelementu
rsElementGetSubElementOffsetBytes Przesunięcie elementu podrzędnego utworzonego na podstawie instancji
rsElementGetVectorSize Rozmiar wektora elementu
rsIsObject, Sprawdzanie, czy nic nie jest puste
rsSamplerGetanizotropia Anizotropia próbki
rsSamplerGetMagnification, Wartość powiększenia próbnika
rsSamplerGetMinification Wartość minifikacji próbkowania
rsSamplerGetWrapS Wartość zawijania próbek (S)
rsSamplerGetWrapT, Wartość zawijania próbek (T)

Funkcje i typy wywoływania jądra

Funkcja rsForEach() może służyć do wywołania głównego jądra skryptu.

Pozostałe funkcje służą do sprawdzania właściwości wywołania wykonywanego jądra, np. wymiarów i bieżących indeksów. Funkcje te przyjmują argument rs_kernel_context.

Rodzaje
rs_for_each_strategy_t Sugerowana kolejność przetwarzania komórek
rs_kernel Uchwyć do funkcji jądra
rs_kernel_context Uchwyt do kontekstu wywołania jądra
rs_script_call_t Informacje o iteracji komórki
Funkcje
rsForEach Uruchamia jądro
rsForEachInternal (Wewnętrzny interfejs API) Uruchamianie jądra w bieżącym skrypcie (z numerem przedziału)
rsForEachWithOptions Uruchamia jądro z opcjami
rsGetTrack0 Indeks w wymiarze tablica0 dla określonego kontekstu jądra
rsGetSlate1 Indeks w wymiarze tablica1 dla określonego kontekstu jądra
rsGetTrack2 Indeks w wymiarze Tablica2 dla określonego kontekstu jądra
rsGetTrack3 Indeks w wymiarze Array3 dla określonego kontekstu jądra
rsGetDimTrack0 Rozmiar wymiaru tablica0 dla określonego kontekstu jądra
rsGetDimSlate1 Rozmiar wymiaru tablica1 dla określonego kontekstu jądra
rsGetDimSlate2 Rozmiar wymiaru tablica2 dla określonego kontekstu jądra
rsGetDimSlate3 Rozmiar wymiaru Array3 dla określonego kontekstu jądra
rsGetDimHasFaces Obecność więcej niż jednej twarzy w określonym kontekście jądra
rsGetDimLod Liczba poziomów szczegółowości dla określonego kontekstu jądra
rsGetDimX Rozmiar wymiaru X dla określonego kontekstu jądra
rsGetDimY Rozmiar wymiaru Y dla określonego kontekstu jądra
rsGetDimZ Rozmiar wymiaru Z dla określonego kontekstu jądra
rsGetFace Współrzędne twarzy dla określonego kontekstu jądra
rsGetLod Indeks w wymiarze Poziomy szczegółów dla określonego kontekstu jądra

Funkcje wejściowe/wyjściowe

Te funkcje służą do:

  • wysłać informacje do klienta Java i
  • Wyślij przetworzony przydział lub otrzymaj następny przydział do przetworzenia.

Funkcje
rsAllocationIoReceived Odbierz nowe treści z kolejki
rsAllocationIoSend Wysyłaj nowe treści do kolejki
rsSendToClient Wyślij wiadomość do klienta (bez blokowania)
rsSendToClientBlokowanie Wyślij wiadomość do klienta, blokując

Funkcje debugowania

Opisane poniżej funkcje są przeznaczone do użytku podczas tworzenia aplikacji. Nie należy ich używać w aplikacjach związanych z dostawą.

Funkcje
rsDebug Rejestruj komunikat i wartości

Funkcje i typy graficzne

Podsystem graficzny RenderScript został usunięty na poziomie API 23.