Fungsi Karakteristik Objek RenderScript

Ringkasan

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.

Ringkasan

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
Fungsi yang Tidak Digunakan Lagi
rsGetAllocation Tidak digunakan lagi. Menampilkan Alokasi untuk pointer yang diberikan

Fungsi

rsAllocationGetDimFaces : Kehadiran lebih dari satu wajah

uint32_t rsAllocationGetDimFaces(rs_allocation a);
Hasil
Menampilkan 1 jika ada lebih dari satu wajah, 0 jika tidak.

Jika Alokasi berupa peta kubus, fungsi ini akan menampilkan 1 jika ada lebih dari satu wajah. Dalam semua kasus lain, kueri akan menampilkan 0.

Gunakan rsGetDimHasFaces() untuk mendapatkan dimensi kernel yang sedang berjalan.

rsAllocationGetDimLOD : Adanya tingkat detail

uint32_t rsAllocationGetDimLOD(rs_allocation a);
Hasil
Menampilkan 1 jika ada lebih dari satu LOD, 0 jika sebaliknya.

Mengkueri Alokasi untuk mengetahui adanya lebih dari satu Tingkat Detail. Hal ini berguna untuk mipmap.

Gunakan rsGetDimLod() untuk mendapatkan dimensi kernel yang sedang berjalan.

rsAllocationGetDimX : Ukuran dimensi X

uint32_t rsAllocationGetDimX(rs_allocation a);
Hasil
X Alokasi.

Menampilkan ukuran dimensi X Alokasi.

Gunakan rsGetDimX() untuk mendapatkan dimensi kernel yang sedang berjalan.

rsAllocationGetDimY : Ukuran dimensi Y

uint32_t rsAllocationGetDimY(rs_allocation a);
Hasil
Y Alokasi.

Menampilkan ukuran dimensi Y Alokasi. Jika Alokasi memiliki kurang dari dua dimensi, tampilkan 0.

Gunakan rsGetDimY() untuk mendapatkan dimensi kernel yang sedang berjalan.

rsAllocationGetDimZ : Ukuran dimensi Z

uint32_t rsAllocationGetDimZ(rs_allocation a);
Hasil
Dimensi Z Alokasi.

Menampilkan ukuran dimensi Z Alokasi. Jika Alokasi memiliki kurang dari tiga dimensi, tampilkan 0.

Gunakan rsGetDimZ() untuk mendapatkan dimensi kernel yang sedang berjalan.

rsAllocationGetElement : Mendapatkan objek yang mendeskripsikan sel Alokasi

rs_element rsAllocationGetElement(rs_allocation a);
Parameter
CANNOT TRANSLATEAlokasi untuk mendapatkan data.
Hasil
Elemen yang menjelaskan tata letak Alokasi.

Mendapatkan objek Elemen yang menjelaskan jenis, jenis, dan karakteristik lainnya dari sel Alokasi. Lihat fungsi rsElement* di bawah.

rsClearObject : Melepaskan objek

void rsClearObject(rs_allocation* dst);
void rsClearObject(rs_element* dst);
void rsClearObject(rs_font* dst); Saat mengompilasi untuk 32 bit. Dihapus dari API level 23 dan yang lebih tinggi
void rsClearObject(rs_mesh* dst); Saat mengompilasi untuk 32 bit. Dihapus dari API level 23 dan yang lebih tinggi
void rsClearObject(rs_program_fragment* dst); Saat mengompilasi untuk 32 bit. Dihapus dari API level 23 dan yang lebih tinggi
void rsClearObject(rs_program_raster* dst); Saat mengompilasi untuk 32 bit. Dihapus dari API level 23 dan yang lebih tinggi
void rsClearObject(rs_program_store* dst); Saat mengompilasi untuk 32 bit. Dihapus dari API level 23 dan yang lebih tinggi
void rsClearObject(rs_program_vertex* dst); Saat mengompilasi untuk 32 bit. Dihapus dari API level 23 dan yang lebih tinggi
void rsClearObject(rs_sampler* dst);
void rsClearObject(rs_script* dst);
void rsClearObject(rs_type* dst);

Memberi tahu runtime bahwa handle ini tidak akan digunakan lagi untuk mengakses objek terkait. Jika ini adalah handle terakhir untuk objek tersebut, pemulihan resource dapat terjadi.

Setelah memanggil fungsi ini, *dst akan ditetapkan ke handle kosong. Lihat rsIsObject().

rsElementGetBytesSize : Ukuran Elemen

uint32_t rsElementGetBytesSize(rs_element e); Ditambahkan di API level 16

Menampilkan ukuran dalam byte yang akan ditempati oleh pembuatan instance Elemen ini.

rsElementGetDataKind : Jenis Elemen

rs_data_types rsElementGetDataKind(rs_element e); Ditambahkan di API level 16

Menampilkan jenis data Elemen. Ini digunakan untuk menafsirkan data piksel.

Lihat rs_data_Kind.

rsElementGetDataType : Jenis data Elemen

rs_data_type rsElementGetDataType(rs_element e); Ditambahkan di API level 16

Menampilkan jenis data dasar Elemen. Ini dapat berupa jenis yang mirip dengan C/C++ (misalnya RS_TYPE_UNSIGNED_8), handle (misalnya RS_TYPE_ALLOCATION dan RS_TYPE_ELEMENT), atau jenis numerik yang lebih kompleks (misalnya RS_TYPE_UNSIGNED_5_6_5 dan RS_TYPE_MATRIX_4X4). Lihat rs_data_type.

Jika Elemen menjelaskan vektor, fungsi ini akan menampilkan jenis data dari salah satu itemnya. Gunakan rsElementGetVectorSize untuk mendapatkan ukuran vektor.

Jika Elemen menjelaskan struktur, RS_TYPE_NONE akan ditampilkan. Gunakan fungsi rsElementGetSub* untuk mempelajari Elemen yang kompleks ini.

rsElementGetSubElement : Subelemen dari Elemen kompleks

rs_element rsElementGetSubElement(rs_element e, uint32_t index); Ditambahkan di API level 16
Parameter
eElemen yang akan dikueri.
indexIndeks sub-elemen yang akan ditampilkan.
Hasil
Sub-elemen pada indeks yang diberikan.

Untuk Elemen yang merepresentasikan struktur, fungsi ini menampilkan subelemen pada indeks yang ditentukan.

Jika Elemen bukan struktur atau indeks lebih besar atau sama dengan jumlah sub-elemen, handle yang tidak valid akan ditampilkan.

rsElementGetSubElementArraySize : Ukuran array sub-elemen dari Elemen kompleks

uint32_t rsElementGetSubElementArraySize(rs_element e, uint32_t index); Ditambahkan di API level 16
Parameter
eElemen yang akan dikueri.
indexIndeks sub-elemen.
Hasil
Ukuran array sub-elemen.

Untuk Elemen kompleks, sub-elemen dapat berupa array berukuran statis. Fungsi ini menampilkan ukuran array sub-elemen di indeks. Pengulangan sub-elemen ini berbeda dengan vektor ukuran tetap.

rsElementGetSubElementCount : Jumlah sub-elemen

uint32_t rsElementGetSubElementCount(rs_element e); Ditambahkan di API level 16
Parameter
eElemen yang datanya akan diambil.
Hasil
Jumlah sub-elemen.

Elemen bisa sederhana, seperti int atau float, atau struktur dengan beberapa sub-elemen. Fungsi ini menampilkan nol untuk Elemen sederhana dan jumlah sub-elemen untuk Elemen kompleks.

rsElementGetSubElementName : Nama sub-elemen

uint32_t rsElementGetSubElementName(rs_element e, uint32_t index, char* name, uint32_t nameLength); Ditambahkan di API level 16
Parameter
eElemen yang datanya akan diambil.
indexIndeks sub-elemen.
namaAlamat array untuk menyimpan nama.
namaPanjangPanjang array nama yang diberikan.
Hasil
Jumlah karakter yang disalin, tidak termasuk terminator null.

Untuk Elemen kompleks, fungsi ini menampilkan nama subelemen pada indeks yang ditentukan.

rsElementGetSubElementNameLength : Panjang nama sub-elemen

uint32_t rsElementGetSubElementNameLength(rs_element e, uint32_t index); Ditambahkan di API level 16
Parameter
eElemen yang datanya akan diambil.
indexIndeks sub-elemen.
Hasil
Panjang nama sub-elemen termasuk terminator null.

Untuk Elemen kompleks, fungsi ini menampilkan panjang nama sub-elemen pada indeks yang ditentukan.

rsElementGetSubElementOffsetBytes : Offset sub-elemen yang dibuat instance

uint32_t rsElementGetSubElementOffsetBytes(rs_element e, uint32_t index); Ditambahkan di API level 16
Parameter
eElemen yang datanya akan diambil.
indexIndeks sub-elemen.
Hasil
Offset dalam byte.

Fungsi ini menampilkan posisi relatif pembuatan instance sub-elemen yang ditentukan dalam pembuatan instance Elemen.

Misalnya, jika Elemen menjelaskan float 32 bit yang diikuti dengan bilangan bulat 32 bit, pengembalian offset untuk yang pertama adalah 0 dan yang kedua 4.

rsElementGetVectorSize : Ukuran vektor Elemen

uint32_t rsElementGetVectorSize(rs_element e); Ditambahkan di API level 16
Parameter
eElemen yang datanya akan diambil.
Hasil
Panjang vektor elemen.

Menampilkan ukuran vektor Elemen. Jika Elemen tidak merepresentasikan vektor, 1 akan ditampilkan.

rsGetAllocation : Menampilkan Alokasi untuk pointer tertentu

rs_allocation rsGetAllocation(const void* p);

Tidak digunakan lagi. Fungsi ini tidak digunakan lagi dan akan dihapus dari SDK dalam rilis mendatang.

Menampilkan Alokasi untuk pointer yang diberikan. Pointer harus menunjuk dalam alokasi yang valid. Hasilnya tidak didefinisikan jika pointer bukan dari Alokasi yang valid.

rsIsObject : Memeriksa handle kosong

bool rsIsObject(rs_allocation v);
bool rsIsObject(rs_element v);
bool rsIsObject(rs_font v); Saat mengompilasi untuk 32 bit. Dihapus dari API level 23 dan yang lebih tinggi
bool rsIsObject(rs_mesh v); Saat mengompilasi untuk 32 bit. Dihapus dari API level 23 dan yang lebih tinggi
bool rsIsObject(rs_program_fragment v); Saat mengompilasi untuk 32 bit. Dihapus dari API level 23 dan yang lebih tinggi
bool rsIsObject(rs_program_raster v); Saat mengompilasi untuk 32 bit. Dihapus dari API level 23 dan yang lebih tinggi
bool rsIsObject(rs_program_store v); Saat mengompilasi untuk 32 bit. Dihapus dari API level 23 dan yang lebih tinggi
bool rsIsObject(rs_program_vertex v); Saat mengompilasi untuk 32 bit. Dihapus dari API level 23 dan yang lebih tinggi
bool rsIsObject(rs_sampler v);
bool rsIsObject(rs_script v);
bool rsIsObject(rs_type v);

Menampilkan true jika handle berisi referensi non-null.

Fungsi ini tidak memvalidasi bahwa pointer internal yang digunakan dalam handle mengarah ke objek valid yang sebenarnya. Fungsi ini hanya memeriksa null.

Fungsi ini dapat digunakan untuk memeriksa Elemen yang ditampilkan oleh rsElementGetSubElement() atau melihat apakah rsClearObject() telah dipanggil pada handle.

rsSamplerGetAnisotropy : Anisotropi Sampler

float rsSamplerGetAnisotropy(rs_sampler s); Ditambahkan di API level 16

Mendapatkan anisotropi Sampler.

Lihat android.renderscript.S.

rsSamplerGetMagnification : Nilai pembesaran Sampler

rs_sampler_value rsSamplerGetMagnification(rs_sampler); Ditambahkan di API level 16

Mendapatkan nilai pembesaran Sampler.

Lihat android.renderscript.S.

rsSamplerGetMinification : Nilai minifikasi Sampler

rs_sampler_value rsSamplerGetMinification(rs_sampler); Ditambahkan di API level 16

Mendapatkan nilai minifikasi Sampler.

Lihat android.renderscript.S.

rsSamplerGetWrapS : Nilai S sampler wrap

rs_sampler_value rsSamplerGetWrapS(rs_sampler); Ditambahkan di API level 16

Mendapatkan nilai S wrap Sampler.

Lihat android.renderscript.S.

rsSamplerGetWrapT : Nilai T sampler wrap

rs_sampler_value rsSamplerGetWrapT(rs_sampler); Ditambahkan di API level 16

Mendapatkan nilai T wrap sampel.

Lihat android.renderscript.S.