مرجع واجهة برمجة التطبيقات لوقت تشغيل RenderScript

نظرة عامة

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عيّنة.
تمت تسمية الدالتَين rsGetElementAt وrsSetElement* بشكلٍ غير صحيح إلى حدّ ما. فهي لا تحصل على عناصر أو تعينها، تشبه أنواع البيانات، بل تحصل على الخلايا أو تعيّنها. فكر فيهما على أنهما rsGetCellAt وrsSetCellAt.

الدوال
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 من واجهة برمجة التطبيقات.