نظرة عامة
RenderScript هو وقت تشغيل عالي الأداء يوفّر عمليات الحوسبة على المستوى الأصلي. يتم تجميع رمز RenderScript على الأجهزة في وقت التشغيل للسماح باستقلالية النظام الأساسي أيضًا.
توضّح هذه المستندات المرجعية واجهات برمجة التطبيقات لوقت التشغيل RenderScript، والتي يمكنك استخدامها لكتابة رمز RenderScript في C99. ويتم تلقائيًا تضمين ملفات عنوان الحوسبة في RenderScript.
لاستخدام RenderScript، يجب استخدام واجهات برمجة تطبيقات وقت تشغيل RenderScript الموثقة هنا بالإضافة إلى واجهات برمجة تطبيقات إطار عمل Android لـ RenderScript. للحصول على مستندات حول واجهات برمجة التطبيقات لإطار عمل Android، يمكنك الاطّلاع على مرجع الحزمة android.renderscript.
لمزيد من المعلومات حول كيفية التطوير باستخدام RenderScript وكيفية تفاعل واجهات برمجة تطبيقات إطار العمل لوقت التشغيل وAndroid، يمكنك الاطّلاع على دليل المطوِّرين RenderScript ونماذج RenderScript.
الأنواع الرقمية
الكميات القياسية:
يتيح RenderScript الأنواع الرقمية التالية:
8 بت | 16 بت | 32 بت | 64 بت | |
عدد صحيح: | char، int8_t | قصير، int16_t | int32_t | طويل، طويل، int64_t |
عدد صحيح بلا توقيع: | uchar، uint8_t | ushort، uint16_t | uint، uint32_t | ulong، uint64_t |
النقطة العائمة: | الشوط | عائم | مزدوج |
المتجهات:
يتيح RenderScript الخطوط المتجهة ذات الحجم الثابت ذات الطول 2 و3 و4. يتم الإعلان عن المتجهات باستخدام اسم النوع الشائع متبوعًا بالرقم 2 أو 3 أو 4. مثلاً float4 وint3 وdouble2 وulong4.
لإنشاء القيم الحرفية للمتجه، استخدم نوع المتجه متبوعًا بالقيم المحاطة بين الأقواس المعقوفة، على سبيل المثال (float3){1.0f, 2.0f, 3.0f}
.
يمكن الوصول إلى إدخالات المتجه باستخدام أنماط تسمية مختلفة.
يمكن الوصول إلى الإدخالات المفردة باتباع اسم المتغير بنقطة و:
- الأحرف x وy وz وw
- الأحرف r وg وb وa،
- الحرف s أو S متبوعًا بفهرس صفري.
على سبيل المثال، في int4 myVar;
ما يلي ما يلي:
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
يمكن الوصول إلى إدخالات متعددة لمتجه مرة واحدة باستخدام معرف يمثل سلسلة من الأحرف أو الفهارس المتعددة. يكون للمتجه الناتج حجم يساوي عدد الإدخالات المسماة.
باستخدام المثال أعلاه، يمكن الوصول إلى الإدخالين الأوسطين باستخدام myVar.yz
وmyVar.gb
وmyVar.s12
وmyVar.S12
.
لا يُشترط أن تكون الإدخالات متجاورة أو بترتيب متزايد. ويمكن حتى تكرار الإدخالات، طالما أننا لا نحاول تعيينها. لا يمكنك أيضًا مزج أنماط التسمية.
في ما يلي أمثلة على الإجراءات التي يمكن اتّخاذها وتلك التي لا يمكن تنفيذها:
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
المصفوفات والأرباع:
يتيح RenderScript المصفوفات المربعة ذات الحجم الثابت للأعداد العشرية بالحجم 2×2 و3×3 و4×4. تتم تسمية الأنواع بـ rs_matrix2x2 وrs_matrix3x3 وrs_matrix4x4. راجِع دوال المصفوفة للحصول على قائمة بالعمليات.
ويمكن استخدام الأرباع أيضًا من خلال rs_quaternion. انظر الدوال الرباعية للحصول على قائمة بالعمليات.
الأنواع | |
---|---|
الحرف2 | عددان صحيحان موقَّعان بـ 8 بت |
الحرف3 | ثلاثة أعداد صحيحة بعلامة 8 بت |
الحرف4 | أربعة أعداد صحيحة موقعة 8 بت |
مزدوج | عددان عائمان 64 بت |
مزدوج | ثلاثة أعداد عشرية 64 بت |
مزدوج | أربعة أعداد عشرية 64 بت |
عائم2 | عددان عائمان 32 بت |
عائم3 | ثلاثة أعداد عشرية 32 بت |
عائم 4 | أربعة أعداد عشرية 32 بت |
نصف | قيمة النقطة العائمة 16 بت |
نصف 2 | عددان عائمان 16 بت |
نصف 3 | ثلاثة أعداد عشرية 16 بت |
نصف 4 | أربعة أعداد عشرية 16 بت |
int16_t | عدد صحيح موقَّع 16 بت |
int2 | عددان صحيحان موقَّعان 32 بت |
int3 | ثلاثة أعداد صحيحة بعلامة 32 بت |
int32_t | عدد صحيح موقَّع 32 بت |
int4 | أربعة أعداد صحيحة موقعة 32 بت |
int64_t | عدد صحيح موقَّع 64 بت |
int8_t | عدد صحيح بعلامة 8 بت |
طويل2 | عددان صحيحان موقَّعان 64 بت |
طويل3 | ثلاثة أعداد صحيحة بعلامة 64 بت |
طويل4 | أربعة أعداد صحيحة موقعة 64 بت |
rs_matrix2x2 | مصفوفة 2×2 لعدد أعداد عشرية 32 بت |
rs_matrix3x3 | مصفوفة 3×3 لعدد أعداد عشرية 32 بت |
rs_matrix4x4 | مصفوفة 4×4 مكوّنة من عدد عائم 32 بت |
rs_quaternion | الرُبع |
short2 | عددان صحيحان موقَّعان 16 بت |
short3 | ثلاثة أعداد صحيحة بعلامة 16 بت |
short4 | أربعة أعداد صحيحة موقّعة 16 بت |
size_t | نوع المقاس غير موقَّع |
ssize_t | نوع الحجم الموقَّع |
uchar | عدد صحيح غير موقع 8 بت |
uchar2 | عددان صحيحان غير موقعين بـ 8 بت |
uchar3 | ثلاثة أعداد صحيحة غير علامة 8 بت |
uchar4 | أربعة أعداد صحيحة غير موقعة بحجم 8 بت |
uint | عدد صحيح غير موقَّع 32 بت |
uint16_t | عدد صحيح 16 بت غير موقع |
uint2 | عددان صحيحان 32 بت غير موقعين |
uint3 | ثلاثة أعداد صحيحة غير علامة 32 بت |
uint32_t | عدد صحيح غير موقَّع 32 بت |
uint4 | أربعة أعداد صحيحة غير موقعة 32 بت |
uint64_t | عدد صحيح 64 بت غير موقَّع |
uint8_t | عدد صحيح غير موقع 8 بت |
طويل | عدد صحيح 64 بت غير موقَّع |
ulong2 | عددان صحيحان 64 بت غير موقعين |
ulong3 | ثلاثة أعداد صحيحة غير موقعة 64 بت |
ulong4 | أربعة أعداد صحيحة غير موقعة 64 بت |
ushort | عدد صحيح 16 بت غير موقع |
ushort2 | عددان صحيحان 16 بت غير موقعين |
ushort3 | ثلاثة أعداد صحيحة غير موقعة 16 بت |
ushort4 | أربعة أعداد صحيحة غير موقعة 16 بت |
أنواع الكائنات
يتم استخدام الأنواع أدناه لمعالجة كائنات RenderScript مثل التخصيصات وأخذ العينات والعناصر والنصوص البرمجية. ويتم إنشاء معظم هذه الكائنات باستخدام واجهات برمجة التطبيقات Java RenderScript.
الأنواع | |
---|---|
rs_allocation | التعامل مع تخصيص |
rs_allocation_cubemap_face | قيمة التعداد لاختيار واجهات الخريطة المكعبة |
rs_allocation_usage_type | حقل Bitfield لتحديد كيفية استخدام التخصيص |
rs_data_kind | نوع بيانات العنصر |
rs_data_type | نوع البيانات الأساسية للعنصر |
rs_element | التعامل مع عنصر |
rs_sampler | التعامل مع عيّنة |
rs_sampler_value | قيمة T في التفاف العينة |
rs_script | التعامل مع نص برمجي |
rs_type | التعامل مع نوع |
rs_yuv_format | تنسيق YUV |
دوال الإحالات الناجحة
تقوم الدوال أدناه بالتحويل من نوع متجه عددي إلى آخر، أو من تمثيل لون إلى آخر.
الدوال | |
---|---|
إحالة ناجحة | تحويل المتجهات العددية |
rsPackColorTo8888 | إنشاء نموذج uchar4 RGBA من الأعداد العشرية |
rsUnpackColor8888 | إنشاء نموذج float4 RGBA من uchar4 |
rsYuvToRGBA | تحويل قيمة YUV إلى نموذج أحمر أخضر أزرق (RGBA) |
الثوابت والدوال الرياضية
يمكن تطبيق الدوال الرياضية أدناه على الكميات القياسية والمتجهات. عند تطبيقها على المتجهات، تكون القيمة التي تم إرجاعها متجهًا للدالة المطبقة على كل إدخال من المدخلات.
مثال:
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);
اطّلِع على دوال Vector Math للتعرُّف على دوال مثل distance() وlength() التي تفسّر الإدخال كمتجه واحد في المسافة ذات الأبعاد العددية.
تتأثر دقة العمليات الرياضية على أعداد عشرية 32 بت بالعلامتين rs_fp_relaxed وrs_fp_full. ضمن rs_fp_relaxed، قد يتم ضغط القيم الصغرى إلى الصفر وقد يتم التقريب إلى الصفر. في المقابل، يتطلب rs_fp_full التعامل بشكل صحيح مع القيم الفرعية، أي أصغر من 1.17549435e-38f. rs_fp_rull يتطلب أيضًا تقريب إلى أقرب مع وجود روابط حتى.
يمكن تحقيق مستويات مختلفة من الدقة والسرعة من خلال استخدام صيغ مختلفة للدوال الحسابية الشائعة. الدوال التي تحمل اسمًا يبدأ بـ
- Native_: قد يحتوي على عمليات تنفيذ أجهزة مخصصة بدقة أضعف. بالإضافة إلى ذلك، قد يتم تقريب القيم الشبه العادية إلى صفر، وقد يتم استخدام التقريب إلى الصفر، وقد لا يتم التعامل مع إدخالات NaN واللانهاية بشكل صحيح.
- نصف_: قد تُجري عمليات حسابية داخلية باستخدام عدد عائم 16 بت. بالإضافة إلى ذلك، قد يتم تقريب القيم الصغرى إلى الصفر، وقد يتم استخدام التقريب إلى الصفر.
الثوابت | |
---|---|
M_1_PI | 1 / باي، كعدد عشري 32 بت |
M_2_PI | 2 / باي، كعدد عشري 32 بت |
M_2_SQRTPI | 2 / sqrt(pi)، كعدد عشري 32 بت |
M_E | e، على شكل عدد عائم 32 بت |
M_LN10 | log_e(10)، كعدد عشري 32 بت |
M_LN2 | log_e(2)، كعدد عشري 32 بت |
M_LOG10E | log_10(e)، كعدد عشري 32 بت |
M_LOG2E | log_2(e)، كعدد عشري 32 بت |
M_PI | باي، على شكل عدد عائم 32 بت |
M_PI_2 | pi / 2، على شكل عدد عائم 32 بت |
M_PI_4 | pi / 4، على شكل عدد عائم 32 بت |
M_SQRT1_2 | 1 / sqrt(2)، كعدد عشري 32 بت |
M_SQRT2 | sqrt(2) ، كعدد عشري 32 بت |
الدوال | |
---|---|
القيمة المطلقة | القيمة المطلقة لعدد صحيح |
acos | جيب التمام المعكوس |
أكوش | جيب التمام العكسي للقطع الزائد |
أكوسبي | جيب التمام المعكوس مقسومًا على باي |
asin | الجيب المعكوسة |
أسينه | الجيب الزائدية المعكوسة |
أسينبي | جيب الزاوية المعكوسة مقسومًا على باي |
أتان | المماس المعكوسة |
atan2 | المماس المعكوسة لنسبة |
atan2pi | المماس المعكوسة لنسبة مقسومة على باي |
أتانه | المماس العكسي للقطع الزائد |
أتانبي | المماس المعكوس مقسومًا على باي |
CBrt | جذر تكعيبي |
سيل | أصغر عدد صحيح لا يقل عن قيمة |
مشبك | تقييد قيمة في نطاق |
clz | عدد وحدات البت البادئة |
copysign | لنسخ علامة رقم إلى رقم آخر |
جيب التمام | جيب التمام |
كوش | جيب التمام الزائدي |
cospi | جيب التمام لعدد مضروب في باي |
درجات علمية | لتحويل وحدات الراديان إلى درجات |
erf | دالة الخطأ الرياضي |
erfc | دالة الخطأ التكميلي الرياضي |
exp | تم رفع e إلى رقم |
تجربة 10 | تم رفع الرقم 10 إلى رقم |
تجربة 2 | تم رفع الرقم 2 إلى رقم. |
expm1 | تم رفع e إلى رقم ناقص واحد |
صور Google | القيمة المطلقة لعدد عائم |
fdim | فرق إيجابي بين قيمتين |
الطابق | أصغر عدد صحيح لا يزيد عن قيمة |
دالة fma | الضرب والجمع |
دالة fmax | عدد عائمين كحد أقصى |
fmin | عدد عائمين كحد أدنى |
fmod | باقي القسمة |
كسر | جزء كسري موجب |
frexp | الخنزير الثنائي والأُس |
half_recip | تم حساب القيمة التبادلية بدقة 16 بت |
half_rsqrt | المقلوب لجذر تربيعي محسوب بدقة 16 بت |
half_sqrt | جذر تربيعي محسوب بدقة 16 بت |
هاي بوت | وتر المثلث القائم |
ilogb | أُسّ الأساس الثاني |
ldexp | تنشئ نقطة عائمة من السرعوف والأس |
lgamma | اللوغاريتم الطبيعي لدالة غاما |
سجلّ | اللوغاريتم الطبيعي |
log10 | لوغاريتم الأساس 10 |
log1p | اللوغاريتم الطبيعي لقيمة زائد 1 |
السجلّ 2 | لوغاريتم الأساس 2 |
سجلّ | أُسّ الأساس الثاني |
مجنون | الضرب والجمع |
الحدّ الأقصى | الحد الأقصى |
دقيقة | الحد الأدنى |
مزيج | يمزج بين قيمتين |
modf | المكونات المتكاملة والكسرية |
nan | ليس رقمًا |
nan_half | ليس رقمًا |
Native_acos | جيب التمام المعكوس التقريبي |
Native_acosh | جيب التمام المعكوس الزائدي التقريبي |
Native_acospi | جيب التمام المعكوس التقريبي مقسومًا على باي |
Native_asin | جيب الزاوية المعكوس التقريبي |
Native_asinh | الجيب الزائدية المعكوسة التقريبية |
Native_asinpi | جيب الزاوية المعكوس التقريبي مقسومًا على باي |
Native_atan | المماس المعكوس التقريبي |
localized_atan2 | المماس المعكوس التقريبي لنسبة معيّنة |
Native_atan2pi | المماس المعكوس التقريبي للنسبة مقسومًا على باي |
Native_atanh | المماس الزائدية المعكوسة التقريبية |
Native_atanpi | المماس المعكوس التقريبي مقسومًا على باي |
Native_cbrt | الجذر التكعيبي التقريبي |
Native_cos | جيب التمام التقريبي |
Native_cosh | جيب التمام التقريبي للناقص |
Native_cospi | جيب التمام التقريبي لرقم مضروبًا في باي |
Native_divide | القسمة التقريبية |
localized_exp | التقريب e الذي تم رفعه إلى رقم |
Native_exp10 | تم رفع الرقم 10 تقريبًا إلى رقم. |
Native_exp2 | التقريب 2 الذي تم رفعه إلى رقم |
Native_expm1 | التقريب إلى الذي تم رفعه إلى رقم ناقص واحد |
localized_hyبوت | وتر المثلث التقريبي |
Native_log | اللوغاريتم الطبيعي التقريبي |
Native_log10 | لوغاريتم الأساس 10 |
Native_log1p | اللوغاريتم الطبيعي التقريبي لقيمة زائد 1 |
Native_log2 | لوغاريتم الأساس 2 تقريبًا |
Native_powr | القاعدة الموجبة التقريبية التي تم رفعها إلى الأس |
Native_recip | العكسي التقريبي |
Native_rootn | جذر العدد النوني التقريبي |
Native_rsqrt | المقلوب التقريبي لجذر تربيعي |
Native_sin | جيب الزاوية التقريبي |
Native_sincos | جيب الزاوية وجيب التمام التقريبيان |
Native_sinh | جيب الزاوية الزائدي التقريبي |
Native_sinpi | جيب الزاوية التقريبي لرقم مضروبًا في باي |
Native_sqrt | جذر تربيعي تقريبي |
Native_tan | المماس التقريبي |
Native_tanh | المماس الزائدي التقريبي |
Native_tanpi | المماس التقريبي لرقم مضروبًا في باي |
التالي | رقم النقطة العائمة التالي |
بوو | تم رفع القاعدة إلى أُس. |
مهر | تم رفع القاعدة إلى أُس عدد صحيح. |
طلب | تم رفع القاعدة الموجبة إلى الأس. |
الراديان | لتحويل الدرجات إلى وحدات راديان |
المتبقي | العدد المتبقي من القسمة |
remquo | حاصل قسمة القسمة وباقي القسمة |
rint | التقريب إلى الزوج |
الجذر | جذر العدد النوني |
round | التقريب بعيدًا عن الصفر |
rsRand | رقم عشوائي زائف |
rsqrt | مقلوب جذر تربيعي |
علامة | علامة قيمة |
جيب | الجيب |
بورصات السينكو | جيب الزاوية وجيب التمام |
سينه | جيب زائدي |
sinpi | جيب رقم مضروب في باي |
التربيع التربيعي | جذر تربيعي |
الخطوة | 0 إذا كانت أقل من قيمة، وإلا فإن 0 |
تان | الظل |
تانه | المماس الزائدي |
تانبي | ظل الزاوية لرقم مضروبًا في باي |
tgamma | دالة غاما |
اقتطاع | اقتطاع نقطة عائمة |
الدوال الرياضية المتجهة
تفسر هذه الدوال وسيطات الإدخال كتمثيل للمتجهات في المساحة ذات الأبعاد التحليلية.
تتأثر دقة العمليات الرياضية على أعداد عشرية 32 بت بالعلامتين rs_fp_relaxed وrs_fp_full. راجع الثوابت والدوال الحسابية للحصول على التفاصيل.
يمكن تحقيق مستويات مختلفة من الدقة والسرعة من خلال استخدام صيغ مختلفة للدوال الحسابية الشائعة. الدوال التي تحمل اسمًا يبدأ بـ
- Native_: قد يحتوي على عمليات تنفيذ أجهزة مخصصة بدقة أضعف. بالإضافة إلى ذلك، قد يتم تقريب القيم الشبه العادية إلى صفر، وقد يتم استخدام التقريب إلى الصفر، وقد لا يتم التعامل مع إدخالات NaN واللانهاية بشكل صحيح.
- Fast_: قد تُجري عمليات حسابية داخلية باستخدام عدد عائم 16 بت. بالإضافة إلى ذلك، قد يتم تقريب القيم الصغرى إلى الصفر، وقد يتم استخدام التقريب إلى الصفر.
الدوال | |
---|---|
صليب | ناتج الضرب الاتجاهي لمتّجهَين |
المسافة | المسافة بين نقطتين |
نقطة | ناتج الضرب النقطي لمتّجهَين |
Fast_distance | المسافة التقريبية بين نقطتين |
Fast_length (طول_سرعة) | الطول التقريبي للمتجه |
Fast_normalize | متجه طبيعي تقريبي |
length | طول المتّجه |
Native_distance | المسافة التقريبية بين نقطتين |
Native_length | الطول التقريبي للمتجه |
localized_normalize | تسوية الخط المتجه تقريبًا |
تسوية | تسوية الخط المتجه |
دوال المصفوفة
تتيح لك هذه الدوال معالجة المصفوفات المربعة للرتبة 2x2 و3x3 و4x4. وهي مفيدة بشكل خاص في عمليات التحويل الرسومية ومتوافقة مع OpenGL.
للصفوف والأعمدة، نستخدم فهرس صفري. على سبيل المثال، تم العثور على العنصر الأخير في rs_matrix4x4 في (3، 3).
يستخدم RenderScript المصفوفات الرئيسية العمود والمتجهات المستندة إلى العمود. يتم تحويل المتجه
عن طريق postmultiplying الخط المتجه، مثل (matrix * vector)
،
كما هو موضّح في rsMatrixMultiply() .
لإنشاء مصفوفة تحويل تُجري عمليتَي تحويل في الوقت نفسه،
اضرب المصفوفتين المصدر، مع التحويل الأول كوسيطة صحيحة. على سبيل المثال، لإنشاء مصفوفة تحويل تطبق التحويل s1 متبوعًا بـ s2، استدعِ rsMatrixLoadMultiply(&combined, &s2, &s1)
.
يُستمَد ذلك من s2 * (s1 * v)
، وهو (s2 * s1) * v
.
لدينا نمطان من الدوال لإنشاء مصفوفات تحويل: rsMatrixLoadTransformation وrsMatrixTransformation. يخزن النمط السابق ببساطة مصفوفة التحويل في الوسيطة الأولى. يعدِّل نوع التحويل مصفوفة تحويل موجودة مسبقًا بحيث يحدث التحويل الجديد أولاً. على سبيل المثال، إذا استدعيت rsMatrix Translate() في مصفوفة تجري بالفعل تحجيم، فإن المصفوفة الناتجة عند تطبيقها على متجه ستقوم أولاً بالترجمة ثم التحجيم.
الدوال | |
---|---|
rsاستخراجFrustumPlanes | حساب مستويات الرسم البياني الهيكلي |
rsIsSphereInFrustum | للتحقق مما إذا كانت الكرة داخل مستويات الخطوط المسطحة |
rsMatrixGet | الحصول على عنصر واحد |
rsMatrixInverse | لعكس مصفوفة في مكانها |
rsMatrixInverseTranspose | يتم قلب المصفوفة وتبديل موضعها في مكانها. |
rsMatrixLoad | تحميل مصفوفة أو نسخها |
rsMatrixLoadFrustum | تحميل مصفوفة إسقاط للإسقاط |
rsMatrixLoadIdentity | تحميل مصفوفة الهوية |
rsMatrixLoadMultiply | ضرب مصفوفتَين |
rsMatrixLoadOrtho | تحميل مصفوفة إسقاط مخطَّطة |
rsMatrixLoadPerspective | تحميل مصفوفة إسقاط المنظور |
rsMatrixLoadrot | تحميل مصفوفة دوران |
rsMatrixLoadScale | تحميل مصفوفة قياس |
rsMatrixLoadTranslate | تحميل مصفوفة ترجمة |
rsMatrixMultiply | ضرب مصفوفة في متجه أو مصفوفة أخرى |
rsMatrixrot | تطبيق الدوران على مصفوفة تحويل |
rsMatrixScale | تطبيق قياس على مصفوفة تحويل |
rsMatrixSet | ضبط عنصر واحد |
rsMatrixTranslate | تطبيق ترجمة على مصفوفة تحويل |
rsMatrixTranspose | تبديل مكان مكان المصفوفة |
الدوال الرباعية
تعالج الدوال التالية الرباعيات.
الدوال | |
---|---|
rsQuaternionAdd | جمع اثنين من الأرباع |
rsQuaternionConjugate | مرافقة رباعية |
rsQuaternionDot | حاصل الضرب النقطي لربعَين |
rsQuaternionGetMatrixUnit | الحصول على مصفوفة دوران من خلال شكل رباعي |
rsQuaternionLoadrot | إنشاء رسم رُبعي للتعابير بالتناوب |
rsQuaternionLoadrotUnit | الرباعي الذي يمثّل دوران حول متجه وحدة عشوائي |
rsQuaternionMultiply | اضرب مقياسًا رباعيًا في مقياس أو ربع رباعي آخر. |
rsQuaternionnormalize | تطبيع رباعي النواة |
rsQuaternionSet | إنشاء رسم ربع سنوي |
rsQuaternionSlerp | الاستيفاء الخطي الكروي بين ربعينين |
وظائف التحديث البسيط
لتعديل القيم المشتركة بين سلاسل محادثات متعدّدة، استخدِم الدوال أدناه. فهي تضمن تحديث القيم بشكل كامل، بمعنى أن الذاكرة تتم قراءتها والتحديثات وكتابة الذاكرة بالترتيب الصحيح.
هذه الدوال أبطأ من مكافئاتها غير الذرية، لذا لا تستخدمها إلا عند الحاجة إلى المزامنة.
في RenderScript، من المحتمل أن تعمل التعليمات البرمجية في سلاسل ترابط منفصلة على الرغم من أنك لم تنشئها بشكل صريح. غالبًا ما يقسم وقت تشغيل RenderScript تنفيذ نواة واحدة عبر خيوط متعددة. يجب أن يتم تعديل العموم العالمية باستخدام الدوال البسيطة. إن أمكن، تعديل الخوارزمية لديك لتجنبها تمامًا.
الدوال | |
---|---|
rsAtomicAdd | إضافة بدون سلسلة محادثات |
rsAtomicAnd | أم لا من حيث الخيط |
rsAtomicCas | مقارنة وضبط من خلال سلاسل محادثات آمنة |
rsAtomicDec | تقليل آمن من خلال سلسلة محادثات |
rsAtomicInc | جزء آمن من سلسلة المحادثات |
rsAtomicMax | الحد الأقصى لسلسلة المحادثات الآمنة |
rsAtomicMin | الحد الأدنى لسلسلة المحادثات الآمنة |
rsAtomicOr | أمان سلسلة التعليمات على مستوى البت أو |
rsAtomicSub | عملية الطرح الآمنة لسلسلة المحادثات |
rsAtomicXor | أمان على سلسلة محادثات بشكل حصري أو |
دوال الوقت وأنواعه
يمكن استخدام الدوال أدناه لمعرفة وقت الساعة الحالي ووقت ضبط النظام الحالي. لا يُنصح باستدعاء هذه الدوال داخل النواة (kernel).
الأنواع | |
---|---|
rs_time_t | الثواني منذ 1 كانون الثاني (يناير) 1970 |
rs_tm | هيكل التاريخ والوقت |
الدوال | |
---|---|
rsGetDt | الوقت المنقضي منذ آخر مكالمة |
rsLocaltime | التحويل إلى التوقيت المحلي |
rsTime | الثواني منذ 1 كانون الثاني (يناير) 1970 |
rsUptimeMillis | مدة تشغيل النظام بالمللي ثانية |
rsUptimeNanos | مدة تشغيل النظام بالنانو ثانية |
دوال إنشاء التخصيص
يمكن استخدام الدوالّ أدناه لإنشاء تخصيصات من نص برمجي.
يمكن استدعاء هذه الدوال بشكل مباشر أو غير مباشر من دالة قابلة للاستدعاء. إذا كان يمكن أن ينتج عن مسار تدفق التحكم استدعاء لهذه الدوال من دالة نواة RenderScript، فسيتم إنشاء خطأ في برنامج التحويل البرمجي.
الدوال | |
---|---|
rsCreateAllocation | إنشاء كائن rs_allocation من النوع المحدد. |
rsCreateElement | تنشئ كائن rs_element من نوع البيانات المحدد |
rsCreatePixelElement | تنشئ كائن rs_element لنوع البيانات المحدد ونوع البيانات المحدد. |
rsCreateType | تنشئ كائن rs_type بسمات العنصر والشكل المحددة. |
rsCreateVectorElement | تنشئ كائن rs_element لنوع البيانات المحدد وعرض المتجه |
دوال الوصول إلى بيانات التخصيص
يمكن استخدام الدوال أدناه للحصول على الخلايا التي يتألف منها التخصيص وتعيينها.
- يمكن الوصول إلى الخلايا الفردية باستخدام الدالتين rsGetElementAt* وrsSetElementAt.
- يمكن نسخ عدة خلايا باستخدام الدالتين rsAllocationCopy* وrsAllocationV* .
- للحصول على القيم من خلال عيّنة، استخدِم rsعيّنة.
الدوال | |
---|---|
rsAllocationCopy1DRange | نسخ الخلايا المتتالية بين عمليات التوزيع |
rsAllocationCopy2DRange | نسخ منطقة خلايا مستطيلة بين عمليات التخصيص |
rsAllocationVLoadX | الحصول على متجه من خلال توزيع الكميات القياسية |
rsAllocationVStoreX | تخزين متجه في توزيع الكميات القياسية |
rsGetElementAt | إرجاع خلية من تخصيص |
rsGetElementAtYuv_uchar_U | الحصول على المكوِّن U لتوزيع YUV |
rsGetElementAtYuv_uchar_V | الحصول على المكوِّن V لتوزيع YUV |
rsGetElementAtYuv_uchar_Y | الحصول على المكوّن Y لتخصيص قيم YUV |
عيّنة | أخذ قيمة من تخصيص بنية |
rsSetElementAt | ضبط خلية لعملية تخصيص |
دوال خصائص الكائنات
يمكن استخدام الدوال أدناه للاستعلام عن خصائص كائن التوزيع أو العنصر أو العينة. تم إنشاء هذه الكائنات من Java. ولا يمكنك إنشاؤها من نص برمجي.
التخصيصات:
تُعد التخصيصات الطريقة الأساسية المستخدمة لتمرير البيانات من وإلى نواة RenderScript.
إنها مجموعة منظمة من الخلايا التي يمكن استخدامها لتخزين الصور النقطية والزخارف ونقاط البيانات العشوائية وما إلى ذلك.
قد تحتوي هذه المجموعة من الخلايا على العديد من الأبعاد (X وY وZ وصفيف 0 وصفيف1 وصفيف 2 ومصفوفة 3) ووجوه (للخرائط المكعبة) ومستوى التفاصيل (للتمثيل البصري).
يُرجى الاطّلاع على android.renderscript.Allocation للحصول على تفاصيل حول إنشاء التوزيعات.
العناصر:
يُستخدم مصطلح "عنصر" بشكل غامض بعض الشيء في RenderScript، حيث يُستخدم كمعلومات نوعية لخلايا التخصيص وإنشاء مثيل لهذا النوع. مثلاً:
- rs_element هو مؤشر لمواصفات النوع
- في دوال مثل rsGetElementAt() ، يشير العنصر "element" إلى إنشاء مثيل للنوع، أي خلية من تخصيص.
تتيح لك الدوال أدناه الاستعلام عن خصائص مواصفات النوع.
يمكن للعنصر تحديد أنواع بيانات بسيطة كما هو موجود في C، على سبيل المثال، عدد صحيح أو عدد عائم أو منطقي. ويمكنها أيضًا تحديد اسم معرِّف لكائن RenderScript. راجِع rs_data_type للحصول على قائمة بالأنواع الأساسية.
يمكن للعناصر تحديد إصدارات متجه ذات حجم ثابت (بالحجم 2 أو 3 أو 4) من الأنواع الأساسية. يمكن تجميع العناصر معًا في عناصر معقدة، لإنشاء ما يكافئ تعريفات البنية C.
يمكن أن يكون للعناصر أيضًا من النوع، وهو معلومات دلالية تستخدم لتفسير بيانات البكسل. يُرجى الاطّلاع على rs_data_kind.
عند إنشاء تخصيصات للعناصر الشائعة، يمكنك ببساطة استخدام أحد العناصر العديدة المُحددة سابقًا مثل F32_2.
لإنشاء عناصر معقدة، استخدم فئة Java Element.Builder.
عيّنات:
تحدد كائنات العيّنات كيفية قراءة التخصيصات كبنية داخل نواة. يمكنك الاطّلاع على android.renderscript.S.
الدوال | |
---|---|
rsAllocationGetDimFaces | وجود أكثر من وجه واحد |
rsAllocationGetDimLOD | توفُّر مستويات التفاصيل |
rsAllocationGetDimX | حجم البُعد "س" |
rsAllocationGetDimY | حجم البُعد "ص" |
rsAllocationGetDimZ | حجم البُعد Z |
rsAllocationGetElement | الحصول على الكائن الذي يصف خلية التخصيص |
rsClearObject | تحرير كائن |
rsElementGetBytesSize | حجم عنصر |
rsElementGetDataKind | نوع العنصر |
rsElementGetDataType | نوع بيانات العنصر |
rsElementGetSubElement | عنصر فرعي لعنصر معقد |
rsElementGetSubElementArraySize | حجم المصفوفة لعنصر فرعي من عنصر مركّب |
rsElementGetSubElementCount | عدد العناصر الفرعية |
rsElementGetSubElementName | اسم عنصر فرعي |
rsElementGetSubElementNameLength | طول اسم العنصر الفرعي |
rsElementGetSubElementOffsetBytes | إزاحة العنصر الفرعي الذي تم إنشاء مثيل له |
rsElementGetVectorSize | حجم الخط المتجه للعنصر |
rsIsObject | التأكّد من عدم توفّر اسم معرِّف |
rsعيّنات متباينة الخواص | متباين الخواص في العينة |
rsSamplerGetMagnification | قيمة تكبير جهاز العيّنات |
rssamplerGetMinification | قيمة تصغير أداة أخذ العيّنات |
rssamplerGetWrapS | قيمة التفاف العينة (S) |
rssamplerGetWrapT | قيمة T في التفاف العينة |
وظائف استدعاء النواة وأنواعها
يمكن استخدام الدالة rsForEvery() لاستدعاء النواة الجذرية لنص برمجي.
وتستخدم الدوال الأخرى للحصول على خصائص استدعاء النواة التنفيذية، مثل الأبعاد والمؤشرات الحالية. تأخذ هذه الدوال rs_kernel_context كوسيطة.
الأنواع | |
---|---|
rs_for_each_strategy_t | طلب معالجة الخلية المقترح |
rs_kernel | التعامل مع دالة نواة |
rs_kernel_context | التعامل مع سياق استدعاء النواة |
rs_script_call_t | معلومات التكرار للخلية |
الدوال | |
---|---|
rsForHow | لتشغيل النواة (kernel) |
rsForEveryinternal | (واجهة برمجة تطبيقات داخلية) إطلاق نواة في النص البرمجي الحالي (مع رقم الخانة) |
rsForSummaryWithOptions | لتشغيل نواة مع خيارات |
rsGetArray0 | الفهرس في سمة Array0 لسياق النواة المحدّدة |
rsGetArray1 | الفهرس في سمة المصفوفة 1 لسياق النواة المحدّد |
rsGetArray2 | الفهرس في سمة المصفوفة 2 لسياق النواة المحدّد |
rsGetArray3 | الفهرس في سمة المصفوفة 3 لسياق النواة المحدّد |
rsGetDimArray0 | حجم بُعد Array0 لسياق النواة المحدّد |
rsGetDimArray1 | حجم سمة المصفوفة 1 لسياق النواة المحدّد |
rsGetDimArray2 | حجم بُعد المصفوفة 2 لسياق النواة المحدّد |
rsGetDimArray3 | حجم بُعد المصفوفة 3 لسياق النواة المحدّد |
rsGetDimHasFaces | وجود أكثر من وجه واحد لسياق النواة المحدد |
rsGetDimLod | عدد مستويات التفاصيل لسياق النواة المحدّد |
rsGetDimX | حجم البُعد "س" لسياق النواة المحدّد |
rsGetDimY | حجم البُعد "ص" لسياق النواة المحدّد |
rsGetDimZ | حجم البُعد Z لسياق النواة المحدّد |
rsGetFace | إحداثيات الوجه لسياق النواة المحدد |
rsGetLod | الفهرس في بُعد "مستويات التفاصيل" لسياق النواة المحدّد |
دوال الإدخال/الإخراج
تُستخدم هذه الدوال لما يلي:
- إرسال معلومات إلى عميل Java
- أرسِل عملية التوزيع التي تمت معالجتها أو استلِم عملية التوزيع التالية للمعالجة.
الدوال | |
---|---|
rsAllocationIoتلقي | استلام محتوى جديد من قائمة الانتظار |
rsAllocationIoSend | إرسال محتوى جديد إلى قائمة المحتوى التالي |
rsSendToClient | إرسال رسالة إلى العميل بدون الحظر |
rsSendToClientBlock | إرسال رسالة إلى العميل مع حظر |
دوال تصحيح الأخطاء
تم تصميم الدوال التالية لاستخدامها أثناء تطوير التطبيقات. ويجب عدم استخدامها في طلبات الشحن.
الدوال | |
---|---|
rsDebug | تسجيل رسالة وقيم |
وظائف الرسومات وأنواعها
تمّت إزالة النظام الفرعي للرسومات في RenderScript عند المستوى 23 من واجهة برمجة التطبيقات.