RenderScript Çalışma Zamanı API'sı Referansı

Genel bakış

RenderScript, yerel düzeyde işlem işlemleri sağlayan yüksek performanslı bir çalışma zamanıdır. RenderScript kodu, platform bağımsızlığına da olanak tanımak için çalışma zamanında cihazlarda derlenir.

Bu referans dokümanlarında, RenderScript kodunu C99'da yazmak için kullanabileceğiniz RenderScript çalışma zamanı API'leri açıklanmaktadır. RenderScript işlem başlığı dosyaları sizin için otomatik olarak eklenir.

RenderScript'i kullanmak için burada belirtilen RenderScript çalışma zamanı API'larını ve RenderScript için Android çerçeve API'larını kullanmanız gerekir. Android çerçevesi API'leriyle ilgili dokümanlar için android.renderscript paket referansına bakın.

RenderScript ile geliştirme ve çalışma zamanı ile Android çerçeve API'lerinin nasıl etkileşimde bulunduğu hakkında daha fazla bilgi için RenderScript geliştirici kılavuzu ve RenderScript örnekleri bölümüne bakın.

Sayısal Türler

Skalerler:

RenderScript aşağıdaki skaler sayısal türleri destekler:

8 bit 16 bit 32 bit 64 bit
Tam sayı: karakter, int8_t kısa, int16_t int32_t uzun, uzun, int64_t
İmzasız tam sayı: Uchar, uint8_t ushort, uint16_t uint, uint32_t ulong, uint64_t
Kayan nokta: yarı kayan çift

Vektörler:

RenderScript, 2, 3 ve 4 uzunluğunda sabit boyutlu vektörleri destekler. Vektörler, genel tür adı ve ardından 2, 3 veya 4 kullanılarak tanımlanır. Ör. float4, int3, double2, ulong4.

Vektör sabit değerleri oluşturmak için vektör türünü ve ardından küme parantezleri arasındaki değerleri kullanın (ör. (float3){1.0f, 2.0f, 3.0f}).

Bir vektörün girişlerine farklı adlandırma stilleri kullanılarak erişilebilir.

Tek girişlere, değişken adı bir noktayla ve aşağıdaki durumlar girilerek erişilebilir:

  • x, y, z ve w harfleri,
  • R, g, b ve a harfleri
  • S veya S harfi ve ardından sıfır tabanlı bir dizin.

Örneğin, int4 myVar; için aşağıdaki değerler eş değerdir:
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

Bir vektörün birden çok girişine, birden çok harf veya dizinin birleşimi olan bir tanımlayıcı kullanılarak aynı anda erişilebilir. Ortaya çıkan vektörün boyutu, adlandırılan giriş sayısına eşittir.

Yukarıdaki örnekte, ortadaki iki girişe myVar.yz, myVar.gb, myVar.s12 ve myVar.S12 kullanılarak erişilebilir.

Girişlerin bitişik veya artan sırada olması gerekmez. Girişler, atamaya çalışmadığımız sürece tekrarlanabilir. Adlandırma stillerini de karıştıramazsınız.

Yapılabilecek ve yapılamayacak şeylere dair örnekler:
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

Matrisler ve Kuternyonlar:

RenderScript, 2x2, 3x3 ve 4x4 boyutlu kayan öğelerin sabit boyutlu kare matrislerini destekler. Türler rs_matrix2x2, rs_matrix3x3 ve rs_matrix4x4 olarak adlandırılır. İşlemlerin listesi için Matrix Functions sayfasını inceleyin.

Kuaternasyonlar rs_quaternion aracılığıyla da desteklenir. İşlemler listesi için Quaterion İşlevleri bölümüne bakın.

Türler
karakter2 İki 8 bit işaretli tam sayı
karakter3 8 bitlik üç işaretli tam sayı
karakter4 Dört 8 bit işaretli tam sayı
double2 İki 64 bit kayan
double3 Üç adet 64 bitlik kayan
çift4 Dört 64 bit kayan
float2 İki adet 32 bit kayan nokta
float3 Üç adet 32 bitlik kayan
kayan4 Dört adet 32 bit kayan nokta
yarım 16 bit kayan nokta değeri
2. yarı İki 16 bit kayan
3. Half Üç adet 16 bit kayan nokta
4. yarı Dört 16 bit kayan
int16_t 16 bit işaretli tam sayı
int2 32 bitlik iki işaretli tam sayı
int3 32 bitlik üç işaretli tam sayı
int32_t 32 bit imzalı tam sayı
int4 Dört 32 bit işaretli tam sayı
int64_t 64 bit imzalı tam sayı
int8_t 8 bit işaretli tam sayı
long2 İki adet 64 bit işaretli tam sayı
long3 64 bitlik üç işaretli tam sayı
long4 Dört adet 64 bit işaretli tam sayı
rs_matrix2x2 32 bit kayan noktalı 2x2 matris
rs_matrix3x3 32 bit kayan öğelerin 3x3 matrisi
rs_matrix4x4 32 bit kayan noktalı 4x4 matrisi
rs_quaternion Kuaterniyon
short2 16 bitlik iki işaretli tam sayı
short3 16 bitlik üç işaretli tam sayı
short4 Dört 16 bit işaretli tam sayı
beden_t İmzasız beden türü
boyut_t İmzalanmış beden türü
Uchar 8 bit imzasız tam sayı
uchar2 İki 8 bit işaretsiz tam sayı
uchar3 8 bitlik üç imzasız tam sayı
uchar4 Dört 8 bit imzasız tam sayı
uint 32 bit imzasız tam sayı
uint16_t 16 bit imzasız tam sayı
uint2 İki 32 bit imzasız tam sayı
uint3 32 bitlik üç imzasız tam sayı
uint32_t 32 bit imzasız tam sayı
uint4 Dört 32 bit imzasız tam sayı
uint64_t 64 bit imzasız tam sayı
uint8_t 8 bit imzasız tam sayı
uzun 64 bit imzasız tam sayı
ulong2 İki 64 bit imzasız tam sayı
ulong3 64 bitlik üç imzasız tam sayı
ulong4 Dört 64 bit imzasız tam sayı
kısa 16 bit imzasız tam sayı
ushort2 İki 16 bit işaretsiz tam sayı
ushort3 16 bitlik üç imzasız tam sayı
ushort4 Dört 16 bit imzasız tam sayı

Nesne Türleri

Aşağıdaki türler; ayırmalar, örnekleyiciler, öğeler ve komut dosyaları gibi RenderScript nesnelerini işlemek için kullanılır. Bu nesnelerin çoğu Java RenderScript API'ları kullanılarak oluşturulur.

Türler
rs_ayırması Bir tahsisi işleme
rs_allocation_cubemap_face Küp harita yüzleri seçme sıralaması
rs_allocation_usage_type Ayırmanın nasıl kullanılacağını belirten bit alanı
rs_veri_türü Öğe veri türü
rs_veri_türü Element temel veri türü
rs_öğesi Bir öğeyi tutma
rs_örnekleyici Örnekleyiciyle paylaşın
rs_örnekleyici_değeri Örnekleyici sarmalama T değeri
rs_script Komut dosyasını işleme
rs_type Bir türü ele alın
rs_yuv_biçimi YUV biçimi

Dönüşüm İşlevleri

Aşağıdaki fonksiyonlar, sayısal bir vektör türünü veya bir renk gösteriminden diğerine dönüştürme yapar.

Fonksiyonlar
dönüştür Sayısal vektörleri dönüştürme
rsPackColorTo8888 Kayan öğelerden uchar4 RGBA oluştur
rsUnpackColor8888 Uchar4'ten float4 RGBA oluşturma
rsYuvToRGBA YUV değerini RGBA'ya dönüştürme

Matematiksel Sabitler ve İşlevler

Aşağıdaki matematiksel fonksiyonlar skalerler ve vektörlere uygulanabilir. Vektörlere uygulandığında döndürülen değer, girişteki her bir girişe uygulanan fonksiyonun vektörüdür.

Örnek:
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);

Bunun yerine girdiyi n boyutlu uzayda tek bir vektör olarak yorumlayan distance() ve length() gibi işlevler için Vektör Matematik İşlevleri konusuna bakın.

32 bitlik kayan noktalardaki matematik işlemlerinin hassasiyeti, pragmas rs_fp_relaxed ve rs_fp_full değerlerinden etkilenir. rs_fp_relaxed altında, normal altı değerler sıfıra atılabilir ve yuvarlama sıfıra doğru yapılabilir. Buna karşılık, rs_fp_full özelliğinin normal olmayan değerlerin (yani 1.17549435e-38f'den küçük) doğru şekilde işlenmesini gerektirir. rs_fp_rull ayrıca çifte eşit şekilde yuvarlama gerektirir.

Yaygın matematik fonksiyonlarının değişkenleri kullanılarak farklı hassasiyet/hız dengelemeleri elde edilebilir. ile başlayan bir ada sahip işlevler

  • yerel_: Daha düşük kesinliğe sahip özel donanım uygulamaları içerebilir. Ayrıca, normal alt değerler sıfıra kaydırılabilir, sıfıra yuvarlama kullanılabilir ve NaN ve sonsuzluk girişi doğru şekilde işlenemez.
  • Yarı_: 16 bit kayan öğeleri kullanarak dahili hesaplamalar yapabilir. Ayrıca, normal altı değerler sıfıra kaydırılabilir ve sıfıra yuvarlama kullanılabilir.

Sabitler
E_1_P 1 / pi, 32 bit kayan nokta olarak
M_2_PI 2 / pi, 32 bit kayan nokta olarak
M_2_KAREKÖKPİ 2 / karekök(pi), 32 bit kayan nokta olarak
E e, 32 bit kayan nokta olarak
M_LN10 log_e(10), 32 bit kayan nokta olarak
M_LN2 log_e(2), 32 bit kayan nokta olarak
M_LOG10E log_10(e), 32 bit kayan nokta olarak
M_LOG2E log_2(e), 32 bit kayan nokta olarak
M_PI pi, 32 bit kayan nokta olarak
E_PI_2 pi / 2, 32 bit kayan nokta olarak
E_PI_4 pi / 4, 32 bit kayan nokta olarak
E_KAREKÖK1_2 1 / karekök(2), 32 bit kayan nokta olarak
M_KAREKÖK2 kare(2), 32 bit kayan nokta olarak
Fonksiyonlar
mutlak Bir tam sayının mutlak değeri
Acos Ters kosinüs
Acosh Ters hiperbolik kosinüs
Acospi Ters kosinüs bölü pi
asin Ters sinüs
asinh Ters hiperbolik sinüs
Asenpi Ters sinüsün pi sayısına bölümü
atan Ters tanjant
atan2 Oranın ters tanjantı
atan2pi Oranın ters tanjantının pi sayısına bölümü
atanh Ters hiperbolik tanjant
atanpi Ters tanjantın pi sayısına bölümü
cbrt Küpkök
tavan Değerden küçük olmayan en küçük tam sayı
kelepçe Bir değeri aralıkla sınırlandırma
cz Baştaki 0 bit sayısı
copysign Bir sayının işaretini başka bir sayıya kopyalar
cos Kosinüs
cosh Hipbolik kosinüs
cospi Bir sayının kosinüsünün pi sayısıyla çarpımı
derece Radyanları dereceye dönüştürür
erf Matematiksel hata işlevi
erfc Matematiksel tamamlayıcı hata işlevi
exp bir sayıya yükseltilen e
exp10 Sayıya yükseltilen 10
exp2 2 sayıya yükseltilmiş
expm1 e eksi bir sayıya yükseltilir
fabs Bir hareketli sayının mutlak değeri
fdim İki değer arasında pozitif fark
zemin Bir değerden büyük olmayan en küçük tam sayı
fma Çoğalt ve ekle
fmaks Maksimum iki kayan noktalı
fd En az iki kayan
fmod Modlo
kesirli Pozitif kesirli kısım
frexp İkili mantis ve üs
half_recip 16 bit hassasiyete göre hesaplanan terslik
half_rsqrt 16 bit hassasiyetle hesaplanan bir karekökün tersi
yarım_sqrt 16 bit hassasiyetle hesaplanan karekök
hipot Hipotenüs
ilogb İki taban üs
ldexp Mantissa ve üsden bir kayan nokta oluşturur
lgamma Gama işlevinin doğal logaritması
log Doğal logaritma
log10 10 tabanında logaritma
log1p Değer artı 1'in doğal logaritması
log2 2. taban logaritma
logb İki taban üs
çılgın Çoğalt ve ekle
maks Maksimum
dk. Minimum
karma İki değeri karıştırır
modf İntegral ve kesirli bileşenler
nan Sayı değil
in_half Sayı değil
yerel_acos Yaklaşık ters kosinüs
yerel_acosh Yaklaşık ters hiperbolik kosinüs
yerel_acospi Yaklaşık ters kosinüsün pi sayısına bölümü
yerel_asin Yaklaşık ters sinüs
yerel_asin Yaklaşık ters hiperbolik sinüs
yerel_asinpi Yaklaşık ters sinüsün pi sayısına bölümü
yerel_atan Yaklaşık ters tanjant
yerel_atan2 Bir oranın yaklaşık ters tanjantı
yerel_atan2pi Oranın yaklaşık ters tanjantının pi sayısına bölümü
yerel_atanh Yaklaşık ters hiperbolik tanjant
yerel_atanpi Yaklaşık ters tanjantın pi sayısına bölümü
yerel_cbrt Yaklaşık küpkök
yerel_cos Yaklaşık kosinüs
yerel_cosh Yaklaşık hipebolik kosinüs
doğal_cospi Bir sayının yaklaşık kosinüsünün pi sayısıyla çarpımı
yerel_böl Yaklaşık bölüm
yerel_exp Bir sayıya yükseltilen yaklaşık e
yerel_exp10 Bir sayıya yükseltilen yaklaşık 10
yerel_exp2 Bir sayıya yükseltilmiş yaklaşık 2
yerel_expm1 Bir sayıya eksi bire yükseltilen yaklaşık e
yerel_hypot Yaklaşık hipotenüs
yerel_log Yaklaşık doğal logaritma
yerel_log10 Yaklaşık 10 tabanında logaritma
yerel_log1p Değerin yaklaşık doğal logaritması ve 1
yerel_log2 Yaklaşık 2 tabanındaki logaritma
yerel_ güç Üsse yükseltilen yaklaşık pozitif taban
yerel_recip Yaklaşık tersi
yerel_kök Yaklaşık n'inci kök
yerel_rsqrt Karekökün yaklaşık tersi
yerel_sin Yaklaşık sinüs
yerel_sincos Yaklaşık sinüs ve kosinüs
yerel_sinh Yaklaşık hiperbolik sinüs
yerel_sinpi Bir sayının yaklaşık sinüsünün pi sayısıyla çarpımı
yerel_sqrt Yaklaşık karekök
yerel_tan Yaklaşık tanjant
yerel_tanh Yaklaşık hiperbolik tanjant
yerel_tanpi Bir sayının yaklaşık tanjantının pi ile çarpımı
nextsonra Sonraki kayan nokta sayısı
güç Üsse yükseltilen taban
pown Taban, bir tam sayı üssüne yükseltilir
güç Üsse yükseltilen pozitif taban
radyan Dereceleri radyana dönüştürür
kalan Bir bölümün kalan kısmı
remquo Bir bölümde kalan kısım ve bölüm
rint Eşit sayıya yuvarla
rootn N'inci kök
yuvarlat Sıfırdan uzaklaştırın
rsRand Rastgele rastgele sayı
rsqrt Karekökün tersi
işaret Değer işareti
sin Sinüs
Sincos Sinüs ve kosinüs
sinh Hiperbolik sinüs
Sinpi Bir sayının sinüsünün pi ile çarpımı
kare Karekök
adımı Değerden küçükse 0, aksi takdirde 0
ten Tanjant
tanh Hiperbolik tanjant
tanpi Bir sayının tanjantı ile pi sayısının çarpımı
tgama Gama işlevi
trunc Kayan noktayı kısaltır

Vektör Matematik İşlevleri

Bu işlevler, giriş bağımsız değişkenlerini, n boyutlu uzayda vektörlerin gösterimi olarak yorumlar.

32 bitlik kayan noktalardaki matematik işlemlerinin hassasiyeti, pragmas rs_fp_relaxed ve rs_fp_full değerlerinden etkilenir. Ayrıntılar için Matematiksel Sabitler ve İşlevler bölümüne bakın.

Yaygın matematik fonksiyonlarının değişkenleri kullanılarak farklı hassasiyet/hız dengelemeleri elde edilebilir. ile başlayan bir ada sahip işlevler

  • yerel_: Daha düşük kesinliğe sahip özel donanım uygulamaları içerebilir. Ayrıca, normal alt değerler sıfıra kaydırılabilir, sıfıra yuvarlama kullanılabilir ve NaN ve sonsuzluk girişi doğru şekilde işlenemez.
  • fast_: 16 bit kayan öğeleri kullanarak dahili hesaplamalar yapabilir. Ayrıca, normal altı değerler sıfıra kaydırılabilir ve sıfıra yuvarlama kullanılabilir.

Fonksiyonlar
artı İki vektörün çapraz çarpımı
mesafe İki nokta arasındaki mesafe
nokta İki vektörün nokta çarpımı
hızlı_distance İki nokta arasındaki yaklaşık mesafe
Hızlı_uzunluk Bir vektörün yaklaşık uzunluğu
hızlı_normalleştirme Yaklaşık normalleştirilmiş vektör
length Bir vektörün uzunluğu
yerel_mesafe İki nokta arasındaki yaklaşık mesafe
yerel_uzunluk Bir vektörün yaklaşık uzunluğu
yerel_normalleştirme Bir vektörü yaklaşık olarak normalleştirme
normalleştir Bir vektörü normalleştirme

Matris İşlevleri

Bu fonksiyonlar, 2x2, 3x3 ve 4x4 sıralamasındaki kare matrisleri değiştirmenize olanak tanır. Özellikle grafik dönüşümler için kullanışlıdır ve OpenGL ile uyumludur.

Satırlar ve sütunlar için sıfır tabanlı bir dizin kullanırız. Örneğin, son rs_matrix4x4 öğesi (3, 3) değerindedir.

RenderScript, sütun ana matrisler ve sütun tabanlı vektörler kullanır. Bir vektörün dönüştürülmesi, rsMatrixMultiply() tarafından sağlanan vektörün (ör. (matrix * vector)) sonra çarpılmasıyla yapılır.

Aynı anda iki dönüşüm gerçekleştiren bir dönüşüm matrisi oluşturmak için iki kaynak matrisi çarpın ve ilk dönüşüm doğru bağımsız değişken olsun. Örneğin s1 ve ardından s2 dönüşümlerini uygulayan bir dönüşüm matrisi oluşturmak için rsMatrixLoadMultiply(&combined, &s2, &s1) yöntemini çağırın. Bu, (s2 * s1) * v olan s2 * (s1 * v) verisinden türetilmiştir.

Dönüşüm matrisleri oluşturmak için iki stilde işlev kullanıyoruz: rsMatrixLoadTransformation ve rsMatrixTransformation. İlk stil yalnızca ilk bağımsız değişkende dönüşüm matrisini depolar. İkincisi ise önceden var olan bir dönüşüm matrisini değiştirerek yeni dönüşümün önce gerçekleşmesini sağlar. Örneğin, zaten ölçeklendirme yapan bir matriste rsMatrixTranslate() çağırırsanız, bir vektöre uygulandığında elde edilen matris önce çeviriyi, ardından ölçeklendirmeyi yapar.

Fonksiyonlar
rsExtractFrustumPlanes Kesintili düzlemleri hesaplama
rsIsSphereInFrustum Bir kürenin kesikli düzlemler içinde olup olmadığını kontrol eder
rsMatrixGet Bir öğe al
rsMatrixTers Mevcut bir matrisi tersine çevirir
rsMatrixTers Transpozisyon Matrisi ters çevirir ve matrisin yerini çevirir
rsMatrixLoad Matrisi yükleme veya kopyalama
rsMatrixLoadFrustum Kesme projeksiyon matrisi yükleme
rsMatrixLoadIdentity Kimlik matrisi yükle
rsMatrixLoadMultiply İki matrisi çarpma
rsMatrixLoadOrtto Yazım projeksiyon matrisi yükleme
rsMatrixLoadPerspective Perspektif projeksiyon matrisi yükleme
rsMatrixLoadDöndür Döndürme matrisi yükleme
rsMatrixLoadScale Ölçeklendirme matrisi yükleme
rsMatrixLoadTranslate Çeviri matrisi yükleme
rsMatrixMultiply Matrisi vektör veya başka bir matrisle çarpabilme
rsMatrixDöndür Dönüşüm matrisine rotasyon uygulama
rsMatrixScale Dönüşüm matrisine ölçeklendirme uygulama
rsMatrixSet Tek bir öğe ayarla
rsMatrixTranslate Bir dönüşüm matrisine çeviri uygulama
rsMatrixTranspose Matrisin yerini değiştirmeyi

Kuaterniyon İşlevleri

Aşağıdaki işlevler dördüncüleri yönetir.

Fonksiyonlar
rsQuaternionEkle İki dördün toplama
rsQuaternionConjugate Kuterniyonu eşle
rsQuaternionNokta İki dördün nokta çarpımı
rsQuaternionGetMatrixUnit Bir dördün dönme matrisi alma
rsQuaternionLoadDöndür Rotasyon dördünü oluşturma
rsQuaternionLoadLoadUnit Rastgele bir birim vektör hakkındaki dönüşü temsil eden kuaterniyon
rsQuaternionMultiply Bir dördünü skaler veya başka bir dördün ile çarpma
rsQuaternionNormalleştirme Bir dörtlüyü normalleştirme
rsQuaternionSet Dörtgen oluştur
rsQuaternionSlerp İki dördün arasındaki küresel doğrusal interpolasyon

Atomik Güncelleme İşlevleri

Birden fazla iş parçacığı arasında paylaşılan değerleri güncellemek için aşağıdaki işlevleri kullanın. Değerlerin atomik olarak güncellenmesini, yani bellek okumalarının, güncellemelerin ve bellek yazmalarının doğru sırada yapılmasını sağlarlar.

Bu işlevler, atomik olmayan eşdeğerlerinden daha yavaştır. Bu nedenle, bunları yalnızca senkronizasyon gerektiğinde kullanın.

RenderScript'te, açık bir şekilde oluşturmamış olsanız bile kodunuzun büyük olasılıkla ayrı iş parçacıkları halinde çalışacağını unutmayın. RenderScript çalışma zamanı genellikle bir çekirdeğin yürütülmesini birden fazla iş parçacığına böler. Genel güncelleme işlemi atomik işlevlerle yapılmalıdır. Mümkünse bunların tamamen önlenmesi için algoritmanızı değiştirin.

Fonksiyonlar
rsAtomicAdd İleti dizisinde güvenli ekleme
rsAtomicAnd İş parçacığı güvenli bit tabanlı ve
rsAtomicCas İş parçacığı güvenli karşılaştırma ve ayarlama
rsAtomicDec İş parçacığı güvenli düşüş
rsAtomicInc İş parçacığı güvenli artım
rsAtomicMax İş parçacığı güvenli maksimum
rsAtomicMin İş parçacığı güvenli minimum
rsAtomicOr İş parçacığı açısından güvenli bit tabanlı veya
rsAtomicSub İleti dizisinde güvenli çıkarma
rsAtomicXor İş parçacığı güvenli bit tabanlı özel veya

Zaman İşlevleri ve Türleri

Aşağıdaki işlevler, geçerli saati ve sistemin o anki çalışma süresini belirtmek için kullanılabilir. Bu işlevlerin bir çekirdek içinde çağrılması önerilmez.

Türler
rs_time_t 1 Ocak 1970'ten bu yana geçen saniye sayısı
rs_tm Tarih ve saat yapısı
Fonksiyonlar
rsGetDt Son aramadan bu yana geçen süre
yerelsaat Yerel saate dönüştür
rsTime 1 Ocak 1970'ten bu yana geçen saniye sayısı
rsUptimeMillis Milisaniye olarak sistem çalışma süresi
rsUptimeNanos Nanosaniye cinsinden sistem çalışma süresi

Ayırma Oluşturma İşlevleri

Aşağıdaki işlevler, bir komut dosyasından Ayırma oluşturmak için kullanılabilir.

Bu işlevler, doğrudan veya dolaylı olarak çağrılabilir bir işlevden çağrılabilir. Bazı kontrol akışı yolları, bir RenderScript çekirdek işlevinden bu işlevlere çağrı yapılmasına neden olabilirse derleyici hatası oluşturulur.

Fonksiyonlar
rsCreateAllocation Belirli bir Türde rs_allocation nesnesi oluşturun.
rsCreateElement Belirtilen veri türünde bir rs_element nesnesi oluşturur
rsCreatePixelElement Belirtilen veri türü ve veri türünden bir rs_element nesnesi oluşturur
rsCreateType Belirtilen Öğe ve şekil özellikleriyle bir rs_type nesnesi oluşturur
rsCreateVectorElement Belirtilen veri türü ve vektör genişliğinde bir rs_element nesnesi oluşturur

Tahsis Veri Erişim İşlevleri

Aşağıdaki işlevler, bir ayırmayı oluşturan hücreleri almak ve ayarlamak için kullanılabilir.

  • Tek tek hücrelere rsGetElementAt* ve rsSetElementAt işlevleri kullanılarak erişilebilir.
  • rsAllocationCopy* ve rsAllocationV* işlevleri kullanılarak birden fazla hücre kopyalanabilir.
  • Değerleri bir örnekleyici üzerinden almak için rsSample'ı kullanın.
rsGetElementAt ve rsSetElement* işlevleri yanlış adlandırılmıştır. Öğe almaz veya ayarlamazlar. Bunlar, veri türlerine benzer. Hücreleri alır veya ayarlarlar. Bunları rsGetCellAt ve rsSetCellAt olarak düşünebilirsiniz.

Fonksiyonlar
rsAllocationCopy1DRange Ayırmalar arasında ardışık hücreleri kopyalama
rsAllocationCopy2DRange Ayırmalar arasında hücrelerin dikdörtgen bölgesini kopyalama
rsAllocationVLoadX Skalerlerin dağılımından vektör alma
rsAllocationVMağazaX Bir vektörü skalerler dağılımında depolama
rsGetElementAt Ayırmadan hücre döndürme
rsGetElementAtYuv_uchar_U YUV tahsisinin U bileşenini alma
rsGetElementAtYuv_uchar_V YUV tahsisinin V bileşenini alma
rsGetElementAtYuv_uchar_Y YUV tahsisinin Y bileşenini alma
rsÖrneği Doku ayırmadan bir değer örnekleme
rsSetElementAt Tahsis hücresini ayarlama

Nesne Özellikleri İşlevleri

Aşağıdaki işlevler bir Ayırma, Öğe veya Örnekleyici nesnesinin özelliklerini sorgulamak için kullanılabilir. Bu nesneler Java'dan oluşturulur. Bunları bir komut dosyasından oluşturamazsınız.

Ayırmalar:

Ayırmalar, RenderScript çekirdekleri arasında veri aktarmak için kullanılan birincil yöntemdir.

Bunlar; bit eşlemleri, dokuları, rastgele veri noktalarını vb. depolamak için kullanılabilen yapılandırılmış bir hücre koleksiyonudur.

Bu hücre koleksiyonu birçok boyuta (X, Y, Z, Dizi0, Dizi1, Dizi2, Dizi3), yüzeye (küp haritalar için) ve ayrıntı düzeyine (eşleştirme için) sahip olabilir.

Ayırma oluşturma ile ilgili ayrıntılar için android.renderscript.Allocation bölümüne bakın.

Öğeler:

RenderScript'te hem bir Allocation hücrelerine ilişkin tür bilgileri hem de o türün örneklendirmesi nedeniyle "öğe" terimi biraz net bir şekilde kullanılmaktadır. Örneğin:

  • rs_element, tür spesifikasyonunun tanıtıcısıdır ve
  • rsGetElementAt() gibi işlevlerde "öğe", türün örneklendirmesini, yani bir Allocation hücresini ifade eder.

Aşağıdaki işlevler, tür spesifikasyonunun özelliklerini sorgulamanıza olanak tanır.

Bir öğe, C'de bulunan basit bir veri türlerini (ör. tam sayı, kayan noktalı veya boole) belirtebilir. Ayrıca, bir RenderScript nesnesinin tanıtıcısını da belirtebilir. Temel türlerin listesi için rs_data_type bölümüne bakın.

Öğeler, temel türlerin sabit boyutlu vektör (2, 3 veya 4 boyutunda) sürümlerini belirtebilir. Öğeler, karmaşık öğeler halinde bir araya getirilebilir. Böylece C yapısı tanımlarına eşdeğer sonuçlar elde edilir.

Öğelerin, piksel verilerini yorumlamak için kullanılan anlamsal bilgiler olan bir türü de olabilir. rs_data_kind konusuna bakın.

Ortak öğelerin tahsislerini oluştururken F32_2 gibi önceden tanımlanmış birçok öğeden birini kullanabilirsiniz.

Karmaşık Öğeler oluşturmak için Element.Builder Java sınıfını kullanın.

Örnekleyiciler:

Örnekleyici nesneleri, Ayırmaların bir çekirdek içinde yapı olarak nasıl okunabileceğini tanımlar. Bkz. android.renderscript.S.

Fonksiyonlar
rsAllocationGetDimFaces Birden fazla yüzün bulunması
rsAllocationGetDimLOD Ayrıntı seviyelerinin varlığı
rsAllocationGetDimX X boyutunun boyutu
rsAllocationGetDimY Y boyutunun boyutu
rsAllocationGetDimZ Z boyutunun boyutu
rsAllocationGetElement Bir Allocation hücresini açıklayan nesneyi alın
rsClearObject Nesneyi serbest bırakma
rsElementGetBytesSize Bir Öğenin Boyutu
rsElementGetDataKind Öğe Türü
rsElementGetDataType Bir Öğenin veri türü
rsElementGetSubElement Karmaşık bir elementin alt öğesi
rsElementGetSubElementArraySize Karmaşık bir elementin alt öğesinin dizi boyutu
rsElementGetSubElementCount Alt öğe sayısı
rsElementGetSubElementName Alt öğenin adı
rsElementGetSubElementNameLength Alt öğe adının uzunluğu
rsElementGetSubElementoffsetBytes Örneklenen alt öğenin göreli konumu
rsElementGetVectorSize Öğenin vektör boyutu
rsIsNesnesi Herkese açık kullanıcı adının boş olup olmadığını kontrol edin
rsSamplerGetAnizotropi Örnekleyicinin Anizotropisi
rsSamplerGetMagnification Örnekleyici büyütme değeri
rsSamplerGetMinification Örnekleyici küçültme değeri
rsSamplerGetWrapS Örnekleyici sarmalama S değeri
rsSamplerGetWrapT Örnekleyici sarmalama T değeri

Çekirdek Çağrı İşlevleri ve Türleri

rsForHer() işlevi bir komut dosyasının kök çekirdeğini çağırmak için kullanılabilir.

Diğer işlevler, çalışan çekirdeğin çağrılmasıyla ilgili boyutlar ve mevcut dizinler gibi özellikleri elde etmek için kullanılır. Bu işlevler, bağımsız değişken olarak bir rs_kernel_context değerini alır.

Türler
her_strateji_için_destek Önerilen hücre işleme sırası
rs_kernel Çekirdek işlevini işleme
rs_kernel_context Çekirdek çağrı bağlamını işleyin
rs_script_call_t Hücre yineleme bilgileri
Fonksiyonlar
rsForHer Çekirdek başlatır
rsForHerDahili (Dahili API) Mevcut komut dosyasında bir çekirdeği başlatın (yuva numarasıyla)
rsForEveryWithOptions Seçeneklerle bir çekirdeği başlatır
rsGetArray0 Belirtilen çekirdek bağlamı için Array0 boyutundaki dizin
rsGetArray1 Belirtilen çekirdek bağlamı için Array1 boyutundaki dizin
rsGetArray2 Belirtilen çekirdek bağlamı için Array2 boyutundaki dizin
rsGetArray3 Belirtilen çekirdek bağlamı için Array3 boyutundaki dizin
rsGetDimArray0 Belirtilen çekirdek bağlamı için Array0 boyutunun boyutu
rsGetDimArray1 Belirtilen çekirdek bağlamı için Array1 boyutunun boyutu
rsGetDimArray2 Belirtilen çekirdek bağlamı için Array2 boyutunun boyutu
rsGetDimArray3 Belirtilen çekirdek bağlamı için Array3 boyutunun boyutu
rsGetDimHasFaces Belirtilen çekirdek bağlamı için birden fazla yüz bulunması
rsGetDimLod Belirtilen çekirdek bağlamı için ayrıntı düzeyi sayısı
rsGetDimX Belirtilen çekirdek bağlamı için X boyutunun boyutu
rsGetDimY Belirtilen çekirdek bağlamı için Y boyutunun boyutu
rsGetDimZ Belirtilen çekirdek bağlamı için Z boyutunun boyutu
rsGetFace Belirtilen çekirdek bağlamı için Yüzün koordinatı
rsGetLod Belirtilen çekirdek bağlamı için Ayrıntı Düzeyleri boyutundaki dizin

Giriş/Çıkış İşlevleri

Bu işlevler şu amaçlarla kullanılır:

  • Java istemcisine bilgi gönderir ve
  • İşlenen tahsisi gönderin veya işlenmek üzere bir sonraki tahsisi alın.

Fonksiyonlar
rsAllocationIoReceive Sıradan yeni içerik al
rsAllocationIoSend Sıraya yeni içerik gönder
rsSendToClient Engellemeden istemciye mesaj gönder
rsSendToClientBlock Engelleyerek müşteriye mesaj gönder

Hata Ayıklama İşlevleri

Aşağıdaki işlevlerin, uygulama geliştirme sırasında kullanılması amaçlanmıştır. Gönderim uygulamalarında kullanılmamalıdır.

Fonksiyonlar
rsDebug Mesaj ve değerleri günlüğe kaydet

Grafik İşlevleri ve Türleri

RenderScript'in grafik alt sistemi, API düzeyi 23'ten kaldırıldı.