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.
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ı.