Ringkasan
RenderScript adalah runtime berperforma tinggi yang menyediakan operasi komputasi di level native. Kode RenderScript dikompilasi pada perangkat saat runtime untuk memungkinkan independensi platform juga.
Dokumentasi referensi ini menjelaskan API runtime RenderScript, yang dapat Anda gunakan untuk menulis kode RenderScript di C99. File header komputasi RenderScript otomatis disertakan untuk Anda.
Untuk menggunakan RenderScript, Anda perlu menggunakan API runtime RenderScript yang didokumentasikan di sini serta API framework Android untuk RenderScript. Untuk dokumentasi tentang API framework Android, lihat referensi paket android.renderscript.
Untuk informasi selengkapnya tentang cara mengembangkan aplikasi dengan RenderScript dan cara runtime dan API framework Android berinteraksi, lihat panduan developer RenderScript dan Contoh RenderScript.
Tipe Numerik
Skalar:
RenderScript mendukung jenis numerik skalar berikut:
8 bit | 16 bit | 32 bit | 64 bit | |
{i>Integer<i} (Bilangan bulat): | karakter, int8_t | singkat, int16_t | int32_t | long, long long, int64_t |
Bilangan bulat tidak bertanda tangan: | uchar, uint8_t | ushort, uint16_t | {i>uint<i}, uint32_t | ulong, uint64_t |
Floating point: | paruh babak | float | ganda |
Vektor:
RenderScript mendukung vektor ukuran tetap dengan panjang 2, 3, dan 4. Vektor dideklarasikan menggunakan nama tipe umum diikuti oleh 2, 3, atau 4. Misalnya float4, int3, double2, ulong4.
Untuk membuat literal vektor, gunakan jenis vektor diikuti dengan nilai yang diapit oleh tanda kurung kurawal, misalnya (float3){1.0f, 2.0f, 3.0f}
.
Entri dari vektor dapat diakses menggunakan gaya penamaan yang berbeda.
Entri tunggal dapat diakses dengan mengikuti nama variabel dengan titik dan:
- Huruf x, y, z, dan w,
- Huruf r, g, b, dan a,
- Huruf s atau S, diikuti dengan indeks berbasis nol.
Misalnya, dengan int4 myVar;
, hal berikut setara:
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
Beberapa entri vektor dapat diakses sekaligus dengan menggunakan ID yang merupakan penyambungan dari beberapa huruf atau indeks. Vektor yang dihasilkan memiliki ukuran yang sama dengan jumlah entri yang dinamai.
Dengan contoh di atas, dua entri tengah dapat diakses menggunakan
myVar.yz
, myVar.gb
, myVar.s12
, dan myVar.S12
.
Entri tidak harus berdekatan atau dalam urutan yang meningkat. Entri bahkan dapat diulang selama kita tidak mencoba menugaskannya. Anda juga tidak dapat mencampur gaya penamaan.
Berikut contoh hal yang dapat atau tidak dapat dilakukan:
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
Matriks dan Kuaternion:
RenderScript mendukung matriks persegi ukuran tetap float dengan ukuran 2x2, 3x3, dan 4x4. Jenisnya bernama rs_matrix2x2, rs_matrix3x3, dan rs_matrix4x4. Lihat Fungsi Matriks untuk daftar operasi.
Kuaternion juga didukung melalui rs_quaternion. Lihat Fungsi Kuaterion untuk daftar operasi.
Jenis | |
---|---|
karakter2 | Dua bilangan bulat bertanda 8 bit |
karakter3 | Tiga bilangan bulat bertanda 8 bit |
karakter4 | Empat bilangan bulat dengan tanda tangan 8 bit |
double2 | Dua float 64 bit |
double3 | Tiga float 64 bit |
double4 | Empat float 64 bit |
float2 | Dua float 32 bit |
float3 | Tiga float 32 bit |
float4 | Empat float 32 bit |
setengah | Nilai floating point 16 bit |
setengah2 | Dua float 16 bit |
setengah3 | Tiga float 16 bit |
setengah 4 | Empat float 16 bit |
int16_t | Bilangan bulat 16 bit dengan tanda tangan |
int2 | Dua bilangan bulat bertanda 32 bit |
int3 | Tiga bilangan bulat bertanda 32 bit |
int32_t | Bilangan bulat dengan tanda tangan 32 bit |
int4 | Empat bilangan bulat bertanda 32 bit |
int64_t | Bilangan bulat dengan tanda tangan 64 bit |
int8_t | Bilangan bulat dengan tanda tangan 8 bit |
panjang2 | Dua bilangan bulat bertanda 64 bit |
panjang3 | Tiga bilangan bulat bertanda 64 bit |
panjang4 | Empat bilangan bulat bertanda 64 bit |
rs_matrix2x2 | Matriks 2x2 dari float 32 bit |
rs_matrix3x3 | Matriks 3x3 dari float 32 bit |
rs_matrix4x4 | Matriks 4x4 dari float 32 bit |
rs_quaternion | Kuaternion |
pendek2 | Dua bilangan bulat bertanda 16 bit |
singkat3 | Tiga bilangan bulat bertanda 16 bit |
short4 | Empat bilangan bulat 16 bit bertanda tangan |
size_t [t_ukuran] | Jenis ukuran yang tidak ditandatangani |
ssize_t [t_ukuran] | Jenis ukuran yang ditandatangani |
uchar | Bilangan bulat tanpa tanda tangan 8 bit |
uchar2 | Dua bilangan bulat tanpa tanda tangan 8 bit |
uchar3 | Tiga bilangan bulat tanpa tanda tangan 8 bit |
uchar4 | Empat bilangan bulat tanpa tanda tangan 8 bit |
uint | Bilangan bulat tanpa tanda tangan 32 bit |
uint16_t | Bilangan bulat tanpa tanda tangan 16 bit |
uint2 | Dua bilangan bulat tanpa tanda tangan 32 bit |
uint3 | Tiga bilangan bulat tanpa tanda tangan 32 bit |
uint32_t | Bilangan bulat tanpa tanda tangan 32 bit |
uint4 | Empat bilangan bulat tanpa tanda tangan 32 bit |
uint64_t | Bilangan bulat tanpa tanda tangan 64 bit |
uint8_t | Bilangan bulat tanpa tanda tangan 8 bit |
ulong | Bilangan bulat tanpa tanda tangan 64 bit |
ulong2 | Dua bilangan bulat tanpa tanda tangan 64 bit |
ulong3 | Tiga bilangan bulat tanpa tanda tangan 64 bit |
ulong4 | Empat bilangan bulat tanpa tanda tangan 64 bit |
singkat | Bilangan bulat tanpa tanda tangan 16 bit |
ushort2 | Dua bilangan bulat tanpa tanda tangan 16 bit |
ushort3 | Tiga bilangan bulat tanpa tanda tangan 16 bit |
ushort4 | Empat bilangan bulat tanpa tanda tangan 16 bit |
Tipe Objek
Jenis di bawah ini digunakan untuk memanipulasi objek RenderScript seperti alokasi, sampler, elemen, dan skrip. Sebagian besar objek ini dibuat menggunakan Java RenderScript API.
Jenis | |
---|---|
rs_allocation | Menangani alokasi |
rs_allocation_cubemap_face | Enum untuk memilih tampilan peta kubus |
rs_allocation_usage_type | Bitfield untuk menentukan cara alokasi digunakan |
rs_data_Kind | Jenis data elemen |
rs_data_type [tipe_data_rs] | Jenis data dasar elemen |
rs_element | Menangani elemen |
rs_sampler | Menangani Sampler |
rs_sampler_value | Nilai T pengemasan sampel |
rs_script | Tangani ke Skrip |
rs_type [tipe_rs] | Menangani ke Jenis |
rs_yuv_format | Format YUV |
Fungsi Konversi
Fungsi di bawah ini mengonversi dari jenis vektor numerik ke jenis vektor lainnya, atau dari satu representasi warna ke representasi lainnya.
Fungsi | |
---|---|
konversi | Mengonversi vektor numerik |
rsPackColorTo8888 | Membuat RGBA uchar4 dari float |
rsUnpackColor8888 | Membuat RGBA float4 dari uchar4 |
rsYuvToRGBA | Mengonversi nilai YUV menjadi RGBA |
Fungsi dan Konstanta Matematis
Fungsi matematika di bawah ini dapat diterapkan pada skalar dan vektor. Jika diterapkan ke vektor, nilai yang ditampilkan adalah vektor dari fungsi yang diterapkan ke setiap entri input.
Contoh:
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);
Lihat Fungsi Matematika Vektor untuk fungsi seperti jarak() dan panjang() yang menafsirkan input sebagai vektor tunggal dalam ruang dimensi n.
Presisi operasi matematika pada float 32 bit dipengaruhi oleh pragmas rs_fp_relaxed dan rs_fp_full. Di bawah rs_fp_relaxed, nilai subnormal dapat dikosongkan ke nol dan pembulatan dapat dilakukan menuju nol. Sebagai perbandingan, rs_fp_full memerlukan penanganan nilai subnormal yang benar, yaitu lebih kecil dari 1,17549435e-38f. {i>rs_fp_rull<i} juga membutuhkan pembulatan ke terdekat dengan ikatan ke genap.
Kompromi yang berbeda presisi/kecepatan dapat dicapai dengan menggunakan varian fungsi matematika umum. Fungsi dengan nama yang diawali dengan
- native_: Dapat memiliki implementasi hardware kustom dengan presisi yang lebih rendah. Selain itu, nilai subnormal mungkin akan menjadi nol, pembulatan ke arah nol dapat digunakan, dan input NaN dan tak terbatas mungkin tidak ditangani dengan benar.
- half_: Dapat melakukan komputasi internal menggunakan float 16 bit. Selain itu, nilai subnormal mungkin menjadi nol, dan pembulatan ke nol dapat digunakan.
Konstanta | |
---|---|
PI_M_1 | 1 / pi, sebagai float 32 bit |
PI_M_2 | 2 / pi, sebagai float 32 bit |
SQRTPI_M_2 | 2 / sqrt(pi), sebagai float 32 bit |
M_E | e, sebagai float 32 bit |
M_LN10 | log_e(10), sebagai float 32 bit |
M_LN2 | log_e(2), sebagai float 32 bit |
M_LOG10E | log_10(e), sebagai float 32 bit |
M_LOG2E | log_2(e), sebagai float 32 bit |
P_PI | pi, sebagai float 32 bit |
P_PI_2 | pi / 2, sebagai float 32 bit |
P_PI_4 | pi / 4, sebagai float 32 bit |
SQRT1_2 | 1 / sqrt(2), sebagai float 32 bit |
SQRT2 | sqrt(2), sebagai float 32 bit |
Fungsi | |
---|---|
abs | Nilai absolut dari bilangan bulat |
acos | Kosinus terbalik |
acosh | Kosinus hiperbolik terbalik |
acospi | Kosinus terbalik dibagi pi |
asin | Sinus terbalik |
asinh | Sinus hiperbolik terbalik |
asinpi | Sinus terbalik dibagi pi |
atan | Tangen terbalik |
atan2 | Tangen terbalik dari suatu rasio |
atan2pi | Tangen terbalik dari suatu rasio, dibagi dengan pi |
atannt | Tangen hiperbolik terbalik |
atanpi | Tangen terbalik dibagi pi |
cbrt | Akar pangkat tiga |
ceil | Bilangan bulat terkecil yang tidak kurang dari nilai |
penjepit | Membatasi nilai ke rentang |
klz | Jumlah 0 bit di depan |
tanda salinan | Menyalin tanda suatu angka ke yang lain |
cos | Kosinus |
cosh | Kosinus hiperbolik |
cospi | Kosinus suatu angka dikalikan dengan pi |
derajat | Mengubah radian menjadi derajat |
erf | Fungsi error matematika |
erfc | Fungsi kesalahan komplementer matematika |
habis | e dipangkatkan ke angka |
eksp10 | 10 dipangkatkan |
eksp2 | 2 dipangkatkan ke suatu angka |
ekspm1 | e dipangkatkan ke angka minus satu |
fab | Nilai absolut dari float |
fdim | Perbedaan positif antara dua nilai |
lantai | Bilangan bulat terkecil yang tidak lebih besar dari nilai |
fma | Kalikan dan tambahkan |
fmax | Maksimum dua float |
fmin | Minimum dua float |
fmod | Modulo |
fraksi | Bagian pecahan positif |
frexp | Eksponen dan mantissa biner |
resip_setengah | Resiprokal dikomputasi dengan presisi 16 bit |
half_rsqrt | Kebalikan dari akar kuadrat yang dihitung dengan presisi 16 bit |
setengah_sqrt | Root kuadrat dihitung dengan presisi 16 bit |
hipot | Sisi miring |
ilogb | Eksponen basis dua |
ldexp | Membuat floating point dari mantissa dan eksponen |
lgamma | Logaritma alami fungsi gamma |
log | Logaritma alami |
log10 | Logaritma basis 10 |
log1p | Logaritma alami nilai ditambah 1 |
log2 | Logaritma basis 2 |
logb | Eksponen basis dua |
gila | Kalikan dan tambahkan |
maks | Maksimum |
mnt | Minimum |
campuran | Mencampur dua nilai |
modf | Komponen integral dan pecahan |
nan | Bukan Angka |
nan_half | Bukan Angka |
native_acos | Perkiraan kosinus terbalik |
native_acosh | Perkiraan kosinus hiperbolik terbalik |
acospi_native | Perkiraan kosinus terbalik dibagi pi |
native_asin | Perkiraan sinus terbalik |
native_asinh | Perkiraan sinus hiperbolik terbalik |
native_asinpi | Perkiraan sinus terbalik dibagi dengan pi |
native_atan | Perkiraan tangen terbalik |
native_atan2 | Memperkirakan tangen terbalik dari sebuah rasio |
native_atan2pi | Memperkirakan tangen terbalik dari sebuah rasio, dibagi dengan pi |
native_atanh | Memperkirakan tangen hiperbolik terbalik |
native_atanpi | Perkiraan tangen terbalik dibagi pi |
native_cbrt | Perkiraan akar pangkat tiga |
cos_native | Perkiraan kosinus |
native_cosh | Perkiraan kosinus hipebolik |
cospi_native | Perkiraan kosinus suatu angka dikalikan dengan pi |
native_divide | Perkiraan pembagian |
native_exp | Perkiraan e dinaikkan ke angka |
native_exp10 | Perkiraan 10 dinaikkan ke jumlah |
native_exp2 | Perkiraan 2 dinaikkan ke angka |
native_expm1 | Perkiraan e dinaikkan ke angka minus satu |
hipot_native | Perkiraan sisi miring |
native_log | Perkiraan logaritma natural |
native_log10 | Logaritma perkiraan basis 10 |
native_log1p | Perkiraan logaritma natural nilai plus 1 |
native_log2 | Logaritma perkiraan basis 2 |
native_powr | Perkiraan basis positif yang dipangkatkan ke eksponen |
resip_native | Perkiraan timbal balik |
native_rootn | Perkiraan akar ke-n |
native_rsqrt | Perkiraan kebalikan dari akar kuadrat |
native_sin | Perkiraan sinus |
sinko_native | Perkiraan sinus dan kosinus |
native_sinh | Perkiraan sinus hiperbolik |
sinpi_native | Perkiraan sinus suatu angka dikalikan dengan pi |
native_sqrt | Perkiraan akar kuadrat |
cokelat_native | Perkiraan tangen |
tanh_native | Perkiraan tangen hiperbolik |
tanpi_native | Perkiraan tangen sebuah angka dikalikan dengan pi |
berikutnya | Bilangan floating point berikutnya |
pow | Basis yang dipangkatkan ke eksponen |
pown | Basis yang dipangkatkan ke eksponen bilangan bulat |
powr | Basis positif yang dipangkatkan ke eksponen |
radian | Mengubah derajat menjadi radian |
sisa | Sisa pembagian |
remquo | Sisa dan hasil bagi dari suatu pembagian |
hilangkan | Bulatkan ke genap |
root | Akar ke-n |
lingkaran | Bulatkan dari nol |
rsRand | Angka acak semu |
rsqrt | Kebalikan dari akar kuadrat |
tanda tangan | Tanda nilai |
sin | Sinus |
sinko | Sinus dan kosinus |
sinh | Sinus hiperbolik |
sinpi | Sinus angka yang dikalikan dengan pi |
sqrt | Akar pangkat dua |
step (langkah) | 0 jika lebih kecil dari nilai, 0 jika tidak |
tan | Tangen |
tanh | Tangen hiperbolik |
tanpi | Tangen sebuah angka dikalikan dengan pi |
tgamma | Fungsi gamma |
trunc | Memotong floating point |
Fungsi Matematika Vektor
Fungsi ini menafsirkan argumen input sebagai representasi vektor dalam ruang n-dimensi.
Presisi operasi matematika pada float 32 bit dipengaruhi oleh pragmas rs_fp_relaxed dan rs_fp_full. Lihat Fungsi dan Konstanta Matematika untuk mengetahui detailnya.
Kompromi yang berbeda presisi/kecepatan dapat dicapai dengan menggunakan varian fungsi matematika umum. Fungsi dengan nama yang diawali dengan
- native_: Dapat memiliki implementasi hardware kustom dengan presisi yang lebih rendah. Selain itu, nilai subnormal mungkin akan menjadi nol, pembulatan ke arah nol dapat digunakan, dan input NaN dan tak terbatas mungkin tidak ditangani dengan benar.
- fast_: Dapat melakukan komputasi internal menggunakan float 16 bit. Selain itu, nilai subnormal mungkin menjadi nol, dan pembulatan ke nol dapat digunakan.
Fungsi | |
---|---|
silang | Perkalian silang dua vektor |
jarak | Jarak antara dua titik |
titik | Perkalian titik dari dua vektor |
jarak_cepat | Perkiraan jarak antara dua titik |
fast_length [panjang_cepat] | Perkiraan panjang vektor |
normalkan_cepat | Perkiraan vektor yang dinormalisasi |
length [panjang] | Panjang vektor |
jarak_native | Perkiraan jarak antara dua titik |
native_length | Perkiraan panjang vektor |
normalkan_native | Menormalkan sekitar vektor |
normalisasi | Menormalisasi vektor |
Fungsi Matriks
Fungsi-fungsi ini memungkinkan Anda memanipulasi matriks kuadrat dengan peringkat 2x2, 3x3, dan 4x4. Library ini sangat berguna untuk transformasi grafis dan kompatibel dengan OpenGL.
Kami menggunakan indeks berbasis nol untuk baris dan kolom. Misalnya, elemen terakhir dari rs_matrix4x4 ditemukan di (3, 3).
RenderScript menggunakan matriks utama kolom dan vektor berbasis kolom. Transformasi vektor dilakukan dengan melakukan postmultiplying vektor, misalnya (matrix * vector)
, seperti yang disediakan oleh rsMatrixMultiply().
Untuk membuat matriks transformasi yang melakukan dua transformasi sekaligus,
kalikan dua matriks sumber, dengan transformasi pertama sebagai argumen
yang tepat. Misalnya, untuk membuat matriks transformasi yang menerapkan transformasi s1 diikuti dengan s2, panggil rsMatrixLoadMultiply(&combined, &s2, &s1)
.
ID ini berasal dari s2 * (s1 * v)
, yang merupakan (s2 * s1) * v
.
Kita memiliki dua gaya fungsi untuk membuat matriks transformasi: rsMatrixLoadTransformation dan rsMatrixTransformation. Gaya pertama hanya menyimpan matriks transformasi dalam argumen pertama. Yang kedua mengubah matriks transformasi yang sudah ada sehingga transformasi baru terjadi terlebih dahulu. Misalnya, jika Anda memanggil rsMatrixTranslate() pada matriks yang sudah melakukan penskalaan, matriks yang dihasilkan saat diterapkan ke vektor terlebih dahulu akan melakukan terjemahan, lalu penskalaan.
Fungsi | |
---|---|
rsExtractFrustumPlanes | Menghitung bidang frustum |
rsIsSphereInFrustum | Memeriksa apakah bola berada di dalam bidang frustum |
rsMatrixGet | Mendapatkan satu elemen |
rsMatrixInverse | Membalikkan matriks yang telah diterapkan |
rsMatrixInverseTranspose | Membalikkan dan melakukan transposisi matriks di tempatnya |
rsMatrixLoad | Memuat atau menyalin matriks |
rsMatrixLoadFrustum | Memuat matriks proyeksi frustum |
rsMatrixLoadIdentity | Memuat matriks identitas |
rsMatrixLoadMultiply | Kalikan dua matriks |
rsMatrixLoadOrtho | Memuat matriks proyeksi ortografis |
rsMatrixLoadPerspective | Memuat matriks proyeksi perspektif |
rsMatrixLoadRotate | Memuat matriks rotasi |
rsMatrixLoadScale | Memuat matriks penskalaan |
rsMatrixLoadTranslate | Memuat matriks terjemahan |
rsMatrixMultiply | Mengalikan matriks dengan vektor atau matriks lain |
rsMatrixRotate | Menerapkan rotasi ke matriks transformasi |
rsMatrixScale | Menerapkan penskalaan ke matriks transformasi |
rsMatrixSet | Tetapkan satu elemen |
rsMatrixTranslate | Menerapkan terjemahan ke matriks transformasi |
rsMatrixTranspose | Transpose tempat matriks |
Fungsi Kuaternion
Fungsi berikut memanipulasi kuarternion.
Fungsi | |
---|---|
rsQuaternionAdd | Tambahkan dua angka empat |
rsQuaternionConjugate | Menggabungkan kuaternion |
rsQuaternionDot | Perkalian titik dari dua kuaternion |
rsQuaternionGetMatrixUnit | Mendapatkan matriks rotasi dari kuaternion |
rsQuaternionLoadRotate | Membuat kuaternion rotasi |
rsQuaternionLoadRotateUnit | Kuaternion yang mewakili rotasi terkait vektor satuan arbitrer |
rsQuaternionMultiply | Mengalikan kuaternion dengan skalar atau kuaternion lainnya |
rsQuaternionNormalize | Menormalisasi kuarternion |
rsQuaternionSet | Membuat angka empat |
rsQuaternionSlerp | Jenis interpolasi linier bola antara dua kuaternion |
Fungsi Pembaruan Atomik
Untuk memperbarui nilai yang dibagikan di antara beberapa thread, gunakan fungsi di bawah. Cara ini memastikan bahwa nilai diupdate secara atomik, yaitu memori membaca, update, dan penulisan memori dilakukan dalam urutan yang benar.
Fungsi ini lebih lambat daripada fungsi non-atomik yang setara, jadi gunakan hanya saat sinkronisasi diperlukan.
Perlu diperhatikan bahwa di RenderScript, kode Anda kemungkinan akan berjalan di thread terpisah meskipun Anda tidak membuatnya secara eksplisit. Runtime RenderScript akan sangat sering membagi eksekusi satu kernel ke beberapa thread. Mengupdate global harus dilakukan dengan fungsi atomik. Jika memungkinkan, ubah algoritma Anda untuk menghindarinya sama sekali.
Fungsi | |
---|---|
rsAtomicAdd | Penambahan thread aman |
rsAtomicAnd | Bitwise yang aman untuk thread dan |
rsAtomicCas | Pembandingan dan setelan yang aman untuk thread |
rsAtomicDec | Pengurangan yang aman untuk thread |
rsAtomicInc | Penambahan yang aman untuk thread |
rsAtomicMax | Maksimum aman untuk thread |
rsAtomicMin | Minimum aman untuk thread |
rsAtomicOr | Bitwise atau thread-safe thread |
rsAtomicSub | Pengurangan yang aman untuk thread |
rsAtomicXor | Eksklusif atau khusus untuk thread yang aman |
Tipe dan Fungsi Waktu
Fungsi di bawah dapat digunakan untuk mengetahui waktu jam saat ini dan waktu aktif sistem saat ini. Tidak disarankan untuk memanggil fungsi ini di dalam {i>kernel<i}.
Jenis | |
---|---|
rs_time_t | Detik sejak 1 Januari 1970 |
rs_tm | Struktur tanggal dan waktu |
Fungsi | |
---|---|
rsGetDt | Waktu berlalu sejak panggilan terakhir |
rsLocaltime | Konversikan ke waktu lokal |
rsTime | Detik sejak 1 Januari 1970 |
rsUptimeMillis | Waktu beroperasi sistem dalam milidetik |
rsUptimeNanos | Waktu beroperasi sistem dalam nanodetik |
Fungsi Pembuatan Alokasi
Fungsi di bawah dapat digunakan untuk membuat Alokasi dari Skrip.
Fungsi ini dapat dipanggil langsung atau tidak langsung dari fungsi yang dapat dipanggil. Jika beberapa jalur alur kontrol dapat mengakibatkan panggilan ke fungsi ini dari fungsi kernel RenderScript, error compiler akan dihasilkan.
Fungsi | |
---|---|
rsCreateAllocation | Membuat objek rs_allocation dari Jenis tertentu. |
rsCreateElement | Membuat objek rs_element dari jenis data yang ditentukan |
rsCreatePixelElement | Membuat objek rs_element dari jenis data dan jenis data yang ditentukan |
rsCreateType | Membuat objek rs_type dengan atribut Elemen dan bentuk yang ditentukan |
rsCreateVectorElement | Membuat objek rs_element dari tipe data dan lebar vektor yang ditentukan |
Fungsi Akses Data Alokasi
Fungsi di bawah ini dapat digunakan untuk mendapatkan dan menetapkan sel yang membentuk alokasi.
- Masing-masing sel diakses menggunakan fungsi rsGetElementAt* dan rsSetElementAt.
- Beberapa sel dapat disalin menggunakan fungsi rsAllocationCopy* dan rsAllocationV*.
- Untuk mendapatkan nilai melalui sampler, gunakan rsSample.
Fungsi | |
---|---|
rsAllocationCopy1DRange | Menyalin sel berturut-turut antar-alokasi |
rsAllocationCopy2DRange | Menyalin wilayah persegi panjang sel di antara alokasi |
rsAllocationVLoadX | Mendapatkan vektor dari alokasi skalar |
rsAllocationVStoreX | Menyimpan vektor ke dalam alokasi skalar |
rsGetElementAt | Menampilkan sel dari alokasi |
rsGetElementAtYuv_uchar_U | Mendapatkan komponen U dari alokasi YUV |
rsGetElementAtYuv_uchar_V | Mendapatkan komponen V dari alokasi YUV |
rsGetElementAtYuv_uchar_Y | Mendapatkan komponen Y dari alokasi YUV |
rsSample | Mengambil sampel nilai dari alokasi tekstur |
rsSetElementAt | Menetapkan sel alokasi |
Fungsi Karakteristik Objek
Fungsi di bawah ini dapat digunakan untuk membuat kueri karakteristik objek Alokasi, Elemen, atau Sampler. Objek ini dibuat dari Java. Anda tidak dapat membuatnya dari skrip.
Alokasi:
Alokasi adalah metode utama yang digunakan untuk meneruskan data ke dan dari kernel RenderScript.
File ini adalah kumpulan sel terstruktur yang dapat digunakan untuk menyimpan bitmap, tekstur, titik data arbitrer, dll.
Kumpulan sel ini dapat memiliki banyak dimensi (X, Y, Z, Array0, Array1, Array2, Array3), wajah (untuk peta kubus), dan tingkat detail (untuk mipmapping).
Lihat android.renderscript.Allocation untuk mengetahui detail tentang cara membuat Alokasi.
Elemen:
Istilah "elemen" digunakan secara ambigu di RenderScript, karena informasi jenis untuk sel Alokasi dan pembuatan instance jenis tersebut. Contoh:
- rs_element adalah handle untuk spesifikasi jenis, dan
- Dalam fungsi seperti rsGetElementAt(), "element" berarti pembuatan instance jenis, yaitu sel Alokasi.
Fungsi di bawah memungkinkan Anda membuat kueri untuk karakteristik spesifikasi jenis.
Elemen dapat menentukan jenis data sederhana seperti yang ditemukan di C, misalnya bilangan bulat, float, atau boolean. Class ini juga dapat menentukan handle untuk objek RenderScript. Lihat rs_data_type untuk mengetahui daftar jenis dasar.
Elemen dapat menentukan versi vektor ukuran tetap (dengan ukuran 2, 3, atau 4) dari jenis dasar. Elemen dapat dikelompokkan bersama ke dalam Elemen kompleks, sehingga menghasilkan definisi struktur C yang setara.
Elemen juga dapat memiliki sejenis, yaitu informasi semantik yang digunakan untuk menafsirkan data piksel. Lihat rs_data_Kind.
Saat membuat Alokasi elemen umum, Anda cukup menggunakan salah satu dari berbagai Elemen bawaan seperti F32_2.
Untuk membuat Element yang kompleks, gunakan class Java Element.Builder.
Sampler:
Objek Sampler menentukan cara Alokasi dapat dibaca sebagai struktur dalam {i>kernel<i}. Lihat android.renderscript.S.
Fungsi | |
---|---|
rsAllocationGetDimFaces | Kehadiran lebih dari satu wajah |
rsAllocationGetDimLOD | Adanya tingkat detail |
rsAllocationGetDimX | Ukuran dimensi X |
rsAllocationGetDimY | Ukuran dimensi Y |
rsAllocationGetDimZ | Ukuran dimensi Z |
rsAllocationGetElement | Mendapatkan objek yang mendeskripsikan sel Alokasi |
rsClearObject | Melepaskan objek |
rsElementGetBytesSize | Ukuran Elemen |
rsElementGetDataKind | Jenis Elemen |
rsElementGetDataType | Jenis data Elemen |
rsElementGetSubElement | Sub-elemen Elemen kompleks |
rsElementGetSubElementArraySize | Ukuran array sub-elemen dari Elemen kompleks |
rsElementGetSubElementCount | Jumlah sub-elemen |
rsElementGetSubElementName | Nama sub-elemen |
rsElementGetSubElementNameLength | Panjang nama sub-elemen |
rsElementGetSubElementOffsetBytes | Offset sub-elemen yang dibuat instance-nya |
rsElementGetVectorSize | Ukuran vektor Elemen |
rsIsObject | Periksa nama sebutan channel yang kosong |
rsSamplerGetAnisotropy | Anisotropi Sampler |
rsSamplerGetMagnification | Nilai pembesaran sampler |
rsSamplerGetMinification | Nilai minifikasi sampler |
rsSamplerGetWrapS | Nilai S wrapper sampel |
rsSamplerGetWrapT | Nilai T pengemasan sampel |
Tipe dan Fungsi Pemanggilan Kernel
Fungsi rsForEach() dapat digunakan untuk memanggil kernel root suatu skrip.
Fungsi lainnya digunakan untuk mendapatkan karakteristik pemanggilan kernel yang mengeksekusi, seperti dimensi dan indeks saat ini. Fungsi ini menggunakan rs_kernel_context sebagai argumen.
Jenis | |
---|---|
rs_for_each_strategy_t | Urutan pemrosesan sel yang disarankan |
rs_kernel | Menangani fungsi kernel |
konteks_kernel_rs_kernel | Menangani konteks pemanggilan kernel |
rs_script_call_t | Informasi iterasi sel |
Fungsi | |
---|---|
rsForSetiap | Meluncurkan kernel |
rsForEachInternal | (API Internal) Meluncurkan kernel dalam Skrip saat ini (dengan nomor slot) |
rsForEachWithOptions | Meluncurkan kernel dengan opsi |
rsGetArray0 | Indeks dalam dimensi Array0 untuk konteks kernel yang ditentukan |
rsGetArray1 | Indeks dalam dimensi Array1 untuk konteks kernel yang ditentukan |
rsGetArray2 | Indeks dalam dimensi Array2 untuk konteks kernel yang ditentukan |
rsGetArray3 | Indeks dalam dimensi Array3 untuk konteks kernel yang ditentukan |
rsGetDimArray0 | Ukuran dimensi Array0 untuk konteks kernel yang ditentukan |
rsGetDimArray1 | Ukuran dimensi Array1 untuk konteks kernel yang ditentukan |
rsGetDimArray2 | Ukuran dimensi Array2 untuk konteks kernel yang ditentukan |
rsGetDimArray3 | Ukuran dimensi Array3 untuk konteks kernel yang ditentukan |
rsGetDimHasFaces | Kehadiran lebih dari satu wajah untuk konteks kernel yang ditentukan |
rsGetDimLod | Jumlah tingkat detail untuk konteks kernel yang ditentukan |
rsGetDimX | Ukuran dimensi X untuk konteks kernel yang ditentukan |
rsGetDimY | Ukuran dimensi Y untuk konteks kernel yang ditentukan |
rsGetDimZ | Ukuran dimensi Z untuk konteks kernel yang ditentukan |
rsGetFace | Koordinat Wajah untuk konteks kernel yang ditentukan |
rsGetLod | Indeks dalam dimensi Tingkat Detail untuk konteks kernel yang ditentukan |
Fungsi Masukan/Keluaran
Fungsi-fungsi ini digunakan untuk:
- Mengirim informasi ke klien Java, dan
- Kirim alokasi yang diproses atau terima alokasi berikutnya untuk diproses.
Fungsi | |
---|---|
rsAllocationIoReceive | Menerima konten baru dari antrean |
rsAllocationIoSend | Kirim konten baru ke antrean |
rsSendToClient | Mengirim pesan ke klien, tidak memblokir |
rsSendToClientBlocking | Mengirim pesan ke klien, memblokir |
Fungsi Debug
Fungsi di bawah ini dimaksudkan untuk digunakan selama pengembangan aplikasi. Keduanya tidak boleh digunakan dalam aplikasi pengiriman.
Fungsi | |
---|---|
rsDebug | Catat pesan dan nilai |
Tipe dan Fungsi Grafis
Subsistem grafis RenderScript telah dihapus pada API level 23.