نمای کلی
RenderScript یک زمان اجرا با کارایی بالا است که عملیات محاسباتی را در سطح بومی ارائه می کند. کد RenderScript در زمان اجرا روی دستگاهها کامپایل میشود تا امکان استقلال از پلتفرم را نیز فراهم کند.
این مستندات مرجع API های زمان اجرا RenderScript را توصیف می کند که می توانید از آنها برای نوشتن کد RenderScript در C99 استفاده کنید. فایل های هدر محاسباتی RenderScript به طور خودکار برای شما گنجانده می شود.
برای استفاده از RenderScript، باید از APIهای زمان اجرا RenderScript که در اینجا مستند شده اند و همچنین APIهای چارچوب Android برای RenderScript استفاده کنید. برای مستندات مربوط به APIهای چارچوب Android، به مرجع بسته android.renderscript مراجعه کنید.
برای اطلاعات بیشتر در مورد نحوه توسعه با RenderScript و نحوه تعامل زمان اجرا و APIهای فریمورک Android، به راهنمای برنامهنویس RenderScript و نمونههای RenderScript مراجعه کنید.
انواع عددی
اسکالرها:
RenderScript از انواع عددی اسکالر زیر پشتیبانی می کند:
8 بیت | 16 بیت | 32 بیت | 64 بیت | |
عدد صحیح: | char، int8_t | کوتاه، int16_t | int32_t | طولانی، طولانی طولانی، int64_t |
عدد صحیح بدون علامت: | uchar، uint8_t | کوتاه، 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 از ماتریس های مربعی با اندازه ثابت شناورهایی با اندازه های 2x2، 3x3 و 4x4 پشتیبانی می کند. این نوع ها rs_matrix2x2 ، rs_matrix3x3 و rs_matrix4x4 نام دارند. برای لیست عملیات به توابع ماتریس مراجعه کنید.
کواترنیون ها نیز از طریق rs_quaternion پشتیبانی می شوند. برای لیست عملیات به توابع Quaterion مراجعه کنید.
انواع | |
---|---|
char2 | دو عدد صحیح امضا شده 8 بیتی |
char3 | سه عدد صحیح امضا شده 8 بیتی |
char4 | چهار عدد صحیح امضا شده 8 بیتی |
double2 | دو شناور 64 بیتی |
double3 | سه شناور 64 بیتی |
دوبل4 | چهار شناور 64 بیتی |
شناور2 | دو شناور 32 بیتی |
float3 | سه شناور 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 | ماتریس 2x2 32 بیتی شناور است |
rs_matrix3x3 | ماتریس 3x3 32 بیتی شناور است |
rs_matrix4x4 | ماتریس 4x4 32 بیتی شناور است |
rs_quaternion | کواترنیون |
کوتاه 2 | دو عدد صحیح امضا شده 16 بیتی |
کوتاه 3 | سه عدد صحیح امضا شده 16 بیتی |
کوتاه 4 | چهار عدد صحیح امضا شده 16 بیتی |
اندازه_t | نوع اندازه بدون علامت |
ssize_t | نوع سایز امضا شده |
uchar | عدد صحیح بدون علامت 8 بیتی |
uchar2 | دو عدد صحیح بدون علامت 8 بیتی |
uchar3 | سه عدد صحیح بدون علامت 8 بیتی |
uchar4 | چهار عدد صحیح بدون علامت 8 بیتی |
unint | عدد صحیح بدون علامت 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 بیتی |
کوتاه | عدد صحیح بدون علامت 16 بیتی |
کوتاه 2 | دو عدد صحیح بدون علامت 16 بیتی |
کوتاه 3 | سه عدد صحیح بدون علامت 16 بیتی |
کوتاه 4 | چهار عدد صحیح بدون علامت 16 بیتی |
انواع شی
انواع زیر برای دستکاری اشیاء RenderScript مانند تخصیص ها، سمپلرها، عناصر و اسکریپت ها استفاده می شود. بیشتر این اشیاء با استفاده از API های Java RenderScript ایجاد می شوند.
انواع | |
---|---|
rs_allocation | رسیدگی به یک تخصیص |
rs_allocation_cubemap_face | Enum برای انتخاب چهره های نقشه مکعبی |
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
// ax to sin(bx),
// ay to sin(by), and
// az to sin(bz).
a = sin(b);
توابع ریاضی برداری را برای توابعی مانند فاصله () و طول () ببینید که در عوض ورودی را به عنوان یک بردار در فضای n بعدی تفسیر می کنند.
دقت عملیات ریاضی روی شناورهای 32 بیتی تحت تأثیر عملگرهای rs_fp_relaxed و rs_fp_full قرار دارد. در rs_fp_relaxed، مقادیر غیرعادی ممکن است به صفر برسند و گرد کردن به سمت صفر انجام شود. در مقایسه، rs_fp_full نیاز به مدیریت صحیح مقادیر غیرعادی دارد، یعنی کوچکتر از 1.17549435e-38f. rs_fp_rull همچنین نیاز به دور به نزدیکترین با پیوندهایی به زوج دارد.
با استفاده از انواع توابع ریاضی رایج می توان به معاوضه های مختلف دقت/سرعت دست یافت. توابع با نام شروع شده با
- native_: ممکن است پیاده سازی سخت افزاری سفارشی با دقت ضعیف تری داشته باشد. علاوه بر این، مقادیر غیرعادی ممکن است به صفر برسند، ممکن است از گرد کردن به سمت صفر استفاده شود، و NaN و ورودی بی نهایت ممکن است به درستی مدیریت نشوند.
- half_: ممکن است محاسبات داخلی را با استفاده از شناورهای 16 بیتی انجام دهد. علاوه بر این، مقادیر غیرعادی ممکن است به صفر برسند، و ممکن است از گرد کردن به سمت صفر استفاده شود.
ثابت ها | |
---|---|
M_1_PI | 1 / pi، به عنوان یک شناور 32 بیتی |
M_2_PI | 2 / pi، به عنوان یک شناور 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 | 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 | کسینوس معکوس |
آکوش | کسینوس هذلولی معکوس |
acospi | کسینوس معکوس تقسیم بر پی |
asin | سینوس معکوس |
asinh | سینوس هذلولی معکوس |
آسینپی | سینوس معکوس تقسیم بر پی |
آتان | مماس معکوس |
آتان 2 | مماس معکوس یک نسبت |
atan2pi | مماس معکوس یک نسبت، تقسیم بر پی |
atanh | مماس هذلولی معکوس |
آتانپی | مماس معکوس تقسیم بر پی |
cbrt | ریشه مکعب |
سقف | کوچکترین عدد صحیح که کمتر از یک مقدار نباشد |
گیره | یک مقدار را به یک محدوده محدود کنید |
clz | تعداد 0 بیت های پیشرو |
کپی علامت | علامت یک عدد را به دیگری کپی می کند |
cos | کسینوس |
cosh | کسینوس هایپبولیک |
cospi | کسینوس یک عدد ضربدر پی |
درجه | رادیان ها را به درجه تبدیل می کند |
erf | تابع خطای ریاضی |
erfc | تابع خطای مکمل ریاضی |
انقضا | e به یک عدد افزایش یافت |
exp10 | 10 به یک عدد افزایش یافته است |
exp2 | 2 به یک عدد افزایش یافته است |
expm1 | e به عدد منهای یک افزایش یافته است |
fabs | ارزش مطلق یک شناور |
fdim | تفاوت مثبت بین دو مقدار |
طبقه | کوچکترین عدد صحیح که از یک مقدار بیشتر نباشد |
fma | ضرب و جمع کنید |
fmax | حداکثر دو شناور |
fmin | حداقل دو شناور |
fmod | ماژول |
کسری | قسمت کسری مثبت |
frexp | مانتیس و توان باینری |
نیم_دستور | متقابل با دقت 16 بیت محاسبه می شود |
half_rsqrt | متقابل یک ریشه مربع با دقت 16 بیت محاسبه شده است |
half_sqrt | ریشه مربع با دقت 16 بیت محاسبه شده است |
هیپوت | هیپوتانوز |
ilogb | توان پایه دو |
ldexp | یک نقطه شناور از مانتیس و نما ایجاد می کند |
الگاما | لگاریتم طبیعی تابع گاما |
ورود به سیستم | لگاریتم طبیعی |
log10 | لگاریتم پایه 10 |
log1p | لگاریتم طبیعی یک مقدار به اضافه 1 |
log2 | لگاریتم پایه 2 |
logb | توان پایه دو |
دیوانه | ضرب و جمع کنید |
حداکثر | حداکثر |
دقیقه | حداقل |
مخلوط کردن | دو مقدار را مخلوط می کند |
modf | اجزای انتگرال و کسری |
نان | یک عدد نیست |
nan_half | یک عدد نیست |
native_acos | کسینوس معکوس تقریبی |
native_acosh | کسینوس هذلولی معکوس تقریبی |
native_acospi | تقریبی کسینوس معکوس تقسیم بر پی |
native_asin | سینوس معکوس تقریبی |
native_asinh | سینوس هذلولی معکوس تقریبی |
native_asinpi | تقریبی سینوس معکوس تقسیم بر پی |
native_atan | مماس معکوس تقریبی |
native_atan2 | مماس معکوس تقریبی یک نسبت |
native_atan2pi | مماس معکوس تقریبی یک نسبت، تقسیم بر پی |
native_atanh | تانژانت هذلولی معکوس تقریبی |
native_atanpi | تقریبی مماس معکوس تقسیم بر پی |
native_cbrt | ریشه مکعب تقریبی |
native_cos | کسینوس تقریبی |
native_cosh | کسینوس هیپبولیک تقریبی |
native_cospi | کسینوس تقریبی یک عدد ضرب در پی |
Native_divide | تقسیم تقریبی |
native_exp | e تقریبی به یک عدد افزایش یافته است |
native_exp10 | تقریباً 10 به یک عدد افزایش یافته است |
native_exp2 | تقریباً 2 به یک عدد افزایش یافته است |
native_expm1 | e تقریبی به عدد منهای یک افزایش یافته است |
native_hypot | هیپوتانوز تقریبی |
native_log | لگاریتم طبیعی تقریبی |
native_log10 | لگاریتم پایه 10 تقریبی |
native_log1p | لگاریتم طبیعی تقریبی یک مقدار به اضافه 1 |
native_log2 | لگاریتم پایه 2 تقریبی |
native_powr | پایه مثبت تقریبی به یک توان افزایش یافته است |
بومی_دستورالعمل | تقریبی متقابل |
native_rootn | ریشه n تقریبی |
native_rsqrt | تقریبی متقابل یک جذر |
native_sin | سینوس تقریبی |
native_sincos | سینوس و کسینوس تقریبی |
native_sinh | سینوس هیپربولیک تقریبی |
native_sinpi | سینوس تقریبی یک عدد ضربدر پی |
native_sqrt | جذر تقریبی |
native_tan | مماس تقریبی |
native_tanh | تانژانت هذلولی تقریبی |
native_tanpi | مماس تقریبی یک عدد ضرب در پی |
بعدی | شماره ممیز شناور بعدی |
قدرت | پایه به یک توان افزایش یافته است |
پاون | پایه به یک توان عدد صحیح افزایش یافته است |
قدرت | پایه مثبت به یک توان افزایش یافته است |
رادیان | درجه را به رادیان تبدیل می کند |
باقی مانده | باقی مانده از یک بخش |
remquo | باقیمانده و نصاب یک تقسیم |
چاپ کردن | گرد تا زوج |
ریشه | ریشه نهم |
گرد | دور از صفر گرد کنید |
rsRand | عدد شبه تصادفی |
rsqrt | متقابل یک جذر |
علامت بزنید | نشانه یک ارزش |
گناه | سینوسی |
sincos | سینوس و کسینوس |
گناه | سینوس هایپربولیک |
سینپی | سینوس یک عدد ضربدر پی |
sqrt | ریشه مربع |
گام | 0 اگر کمتر از یک مقدار باشد، 0 در غیر این صورت |
برنزه | مماس |
tanh | مماس هایپربولیک |
تانپی | مماس یک عدد ضربدر پی |
tgamma | تابع گاما |
تنه | یک نقطه شناور را کوتاه می کند |
وکتور توابع ریاضی
این توابع آرگومان های ورودی را به عنوان نمایش بردارها در فضای n بعدی تفسیر می کنند.
دقت عملیات ریاضی روی شناورهای 32 بیتی تحت تأثیر عملگرهای rs_fp_relaxed و rs_fp_full قرار دارد. برای جزئیات بیشتر به ثابت ها و توابع ریاضی مراجعه کنید.
با استفاده از انواع توابع ریاضی رایج می توان به معاوضه های مختلف دقت/سرعت دست یافت. توابع با نام شروع شده با
- native_: ممکن است پیاده سازی سخت افزاری سفارشی با دقت ضعیف تری داشته باشد. علاوه بر این، مقادیر غیرعادی ممکن است به صفر برسند، ممکن است از گرد کردن به سمت صفر استفاده شود، و NaN و ورودی بی نهایت ممکن است به درستی مدیریت نشوند.
- fast_: ممکن است محاسبات داخلی را با استفاده از شناورهای 16 بیتی انجام دهد. علاوه بر این، مقادیر غیرعادی ممکن است به صفر برسند، و ممکن است از گرد کردن به سمت صفر استفاده شود.
توابع | |
---|---|
متقاطع | حاصل ضرب دو بردار |
فاصله | فاصله بین دو نقطه |
نقطه | حاصل ضرب نقطه ای دو بردار |
سریع_فاصله | فاصله تقریبی بین دو نقطه |
fast_length | طول تقریبی یک بردار |
fast_normalize | بردار نرمال شده تقریبی |
طول | طول یک بردار |
بومی_فاصله | فاصله تقریبی بین دو نقطه |
طول_طول | طول تقریبی یک بردار |
native_normalize | یک بردار را تقریباً نرمال کنید |
عادی کردن | یک بردار را عادی کنید |
توابع ماتریسی
این توابع به شما امکان می دهند ماتریس های مربعی با رتبه های 2x2، 3x3 و 4x4 را دستکاری کنید. آنها به ویژه برای تبدیل های گرافیکی مفید هستند و با OpenGL سازگار هستند.
ما از یک شاخص مبتنی بر صفر برای سطرها و ستون ها استفاده می کنیم. به عنوان مثال آخرین عنصر یک rs_matrix4x4 در (3، 3) یافت می شود.
RenderScript از ماتریس های ستون اصلی و بردارهای مبتنی بر ستون استفاده می کند. تبدیل یک بردار با پس ضرب بردار انجام می شود، به عنوان مثال (matrix * vector)
، همانطور که توسط rsMatrixMultiply () ارائه شده است.
برای ایجاد یک ماتریس تبدیل که دو تبدیل را همزمان انجام می دهد، دو ماتریس منبع را ضرب کنید و اولین تبدیل به عنوان آرگومان مناسب است. به عنوان مثال برای ایجاد یک ماتریس تبدیل که تبدیل s1 و سپس s2 را اعمال می کند، rsMatrixLoadMultiply(&combined, &s2, &s1)
را فراخوانی کنید. این از s2 * (s1 * v)
گرفته شده است که (s2 * s1) * v
است.
ما دو سبک تابع برای ایجاد ماتریس های تبدیل داریم: rsMatrixLoad Transformation و rsMatrix Transformation . سبک قبلی به سادگی ماتریس تبدیل را در آرگومان اول ذخیره می کند. دومی یک ماتریس تبدیل از قبل موجود را اصلاح می کند تا تبدیل جدید ابتدا اتفاق بیفتد. به عنوان مثال، اگر rsMatrixTranslate () را روی ماتریسی که قبلاً مقیاسبندی را انجام میدهد، فراخوانی کنید، ماتریس بهدستآمده وقتی روی یک بردار اعمال میشود، ابتدا ترجمه را انجام میدهد و سپس مقیاسگذاری را انجام میدهد.
توابع | |
---|---|
rsExtractFrustum Planes | صفحات فروستوم را محاسبه کنید |
rsIsSphereInFrustum | بررسی می کند که آیا یک کره در صفحات فروستوم قرار دارد یا خیر |
rsMatrixGet | یک عنصر را دریافت کنید |
rsMatrixInverse | یک ماتریس را در جای خود معکوس می کند |
rsMatrixInverseTranspose | یک ماتریس را در جای خود معکوس و جابجا می کند |
rsMatrixLoad | یک ماتریس را بارگیری یا کپی کنید |
rsMatrixLoadFrustum | یک ماتریس طرح ریزی فروستوم را بارگذاری کنید |
rsMatrixLoadIdentity | بارگذاری ماتریس هویت |
rsMatrixLoadMultiply | دو ماتریس را ضرب کنید |
rsMatrixLoadOrtho | بارگذاری یک ماتریس طرح ریزی املایی |
rsMatrixLoadPerspective | بارگذاری یک ماتریس طرح ریزی پرسپکتیو |
rsMatrixLoadRotate | یک ماتریس چرخشی بارگذاری کنید |
rsMatrixLoadScale | یک ماتریس مقیاس بندی را بارگذاری کنید |
rsMatrixLoadTranslate | ماتریس ترجمه را بارگیری کنید |
rsMatrixMultiply | یک ماتریس را در یک بردار یا یک ماتریس دیگر ضرب کنید |
rsMatrixRotate | یک چرخش را به یک ماتریس تبدیل اعمال کنید |
rsMatrixScale | یک مقیاس بندی را برای یک ماتریس تبدیل اعمال کنید |
rsMatrixSet | یک عنصر را تنظیم کنید |
rsMatrixTranslate | یک ترجمه را به یک ماتریس تبدیل اعمال کنید |
rsMatrixTranspose | جابجایی یک مکان ماتریسی |
توابع کواترنیون
توابع زیر کواترنیون ها را دستکاری می کنند.
توابع | |
---|---|
rsQuaternionAdd | دو کواترنیون اضافه کنید |
rsQuaternionConjugate | یک کواترنیون را مزدوج کنید |
rsQuaternionDot | حاصل ضرب نقطه ای دو کواترنیون |
rsQuaternionGetMatrixUnit | یک ماتریس چرخش از یک کواترنیون بگیرید |
rsQuaternionLoadRotate | یک کواترنیون چرخشی ایجاد کنید |
rsQuaternionLoadRotateUnit | کواترنیونی که چرخش حول یک بردار واحد دلخواه را نشان می دهد |
rsQuaternionMultiply | یک کواترنیون را در یک اسکالر یا یک کواترنیون دیگر ضرب کنید |
rsQuaternionNormalize | یک کواترنیون را عادی کنید |
rsQuaternionSet | یک کواترنیون ایجاد کنید |
rsQuaternionSlerp | درونیابی خطی کروی بین دو کواترنیون |
توابع به روز رسانی اتمی
برای به روز رسانی مقادیر به اشتراک گذاشته شده بین چندین رشته، از توابع زیر استفاده کنید. آنها اطمینان حاصل می کنند که مقادیر به صورت اتمی به روز می شوند، یعنی خواندن حافظه، به روز رسانی ها و نوشتن حافظه به ترتیب درست انجام می شود.
این توابع کندتر از معادل های غیر اتمی خود هستند، بنابراین فقط زمانی از آنها استفاده کنید که همگام سازی مورد نیاز است.
توجه داشته باشید که در RenderScript، کد شما احتمالاً در رشتههای جداگانه اجرا میشود، حتی اگر به صراحت آنها را ایجاد نکرده باشید. زمان اجرا RenderScript اغلب اجرای یک هسته را در چندین رشته تقسیم می کند. به روز رسانی جهانی ها باید با توابع اتمی انجام شود. در صورت امکان، الگوریتم خود را تغییر دهید تا به طور کلی از آنها اجتناب کنید.
توابع | |
---|---|
rsAtomicAdd | علاوه بر نخ ایمن |
rsAtomicAnd | Thread-safe بیتی و |
rsAtomicCas | مقایسه و تنظیم ایمن نخ |
rsAtomicDec | کاهش ایمن نخ |
rsAtomicInc | افزایش ایمن نخ |
rsAtomicMax | حداکثر رزوه ایمن |
rsAtomicMin | حداقل رزوه ایمن |
rsAtomicOr | Thread-safe به صورت بیتی یا |
rsAtomicSub | تفریق بی خطر |
rsAtomicXor | Thread-safe bitwise انحصاری یا |
توابع و انواع زمان
توابع زیر را می توان برای اعلام زمان فعلی ساعت و زمان فعلی سیستم استفاده کرد. فراخوانی این توابع در داخل هسته توصیه نمی شود.
انواع | |
---|---|
rs_time_t | چند ثانیه از اول ژانویه 1970 |
rs_tm | ساختار تاریخ و زمان |
توابع | |
---|---|
rsGetDt | زمان سپری شده از آخرین تماس |
rsLocaltime | تبدیل به زمان محلی |
rsTime | چند ثانیه از اول ژانویه 1970 |
rsUptimeMillis | زمان کارکرد سیستم بر حسب میلی ثانیه |
rsUptimeNanos | زمان کارکرد سیستم در نانوثانیه |
توابع ایجاد تخصیص
توابع زیر را می توان برای ایجاد تخصیص از یک اسکریپت استفاده کرد.
این توابع را می توان به طور مستقیم یا غیر مستقیم از یک تابع فراخوانی فراخوانی کرد. اگر برخی از مسیرهای کنترل جریان بتواند منجر به فراخوانی این توابع از یک تابع هسته RenderScript شود، یک خطای کامپایلر ایجاد خواهد شد.
توابع | |
---|---|
rsCreateAllocation | یک شی rs_allocation از نوع داده شده ایجاد کنید. |
rsCreateElement | یک شی rs_element از نوع داده مشخص شده ایجاد می کند |
rsCreatePixelElement | یک شی rs_element از نوع داده و نوع داده مشخص شده ایجاد می کند |
rsCreateType | یک شی rs_type با ویژگی های Element و shape مشخص شده ایجاد می کند |
rsCreateVectorElement | یک شی rs_element با نوع داده و عرض برداری مشخص شده ایجاد می کند |
توابع دسترسی به داده های تخصیص
از توابع زیر می توان برای دریافت و تنظیم سلول هایی که یک تخصیص را تشکیل می دهند استفاده کرد.
- سلول های جداگانه با استفاده از توابع rsGetElementAt* و rsSetElementAt قابل دسترسی هستند.
- چندین سلول را می توان با استفاده از توابع rsAllocationCopy* و rsAllocationV* کپی کرد.
- برای دریافت مقادیر از طریق یک نمونهگر، از rsSample استفاده کنید.
توابع | |
---|---|
rsAlocationCopy1DRange | سلول های متوالی را بین تخصیص ها کپی کنید |
rsAllocationCopy2DRange | یک ناحیه مستطیلی از سلول ها را بین تخصیص ها کپی کنید |
rsAllocationVLoadX | یک بردار از تخصیص اسکالرها دریافت کنید |
rsAllocationVStoreX | یک بردار را در یک تخصیص اسکالر ذخیره کنید |
rsGetElementAt | یک سلول را از یک تخصیص برگردانید |
rsGetElementAtYuv_uchar_U | مولفه U را از تخصیص YUV دریافت کنید |
rsGetElementAtYuv_uchar_V | جزء V یک تخصیص YUV را دریافت کنید |
rsGetElementAtYuv_uchar_Y | مولفه Y را از تخصیص YUV دریافت کنید |
rsSample | یک مقدار از تخصیص بافت نمونه بگیرید |
rsSetElementAt | یک سلول از یک تخصیص را تنظیم کنید |
توابع ویژگی های شی
توابع زیر را می توان برای پرس و جو از ویژگی های یک شیء تخصیص، عنصر یا نمونه استفاده کرد. این اشیاء از جاوا ایجاد شده اند. شما نمی توانید آنها را از یک اسکریپت ایجاد کنید.
تخصیص ها:
تخصیص ها روش اصلی مورد استفاده برای ارسال داده ها به و از هسته های RenderScript هستند.
آنها مجموعه ای ساختار یافته از سلول ها هستند که می توانند برای ذخیره بیت مپ ها، بافت ها، نقاط داده دلخواه و غیره استفاده شوند.
این مجموعه از سلول ها ممکن است دارای ابعاد زیادی (X، Y، Z، Array0، Array1، Array2، Array3)، چهره (برای نقشه مکعبی)، و سطح جزئیات (برای mipmapping) باشد.
برای جزئیات بیشتر در مورد ایجاد تخصیص به android.renderscript.Allocation مراجعه کنید.
عناصر:
اصطلاح "عنصر" کمی مبهم در RenderScript استفاده می شود، هم به عنوان اطلاعات نوع برای سلول های یک تخصیص و هم به عنوان نمونه سازی از آن نوع. به عنوان مثال:
- rs_element یک دسته برای مشخصات نوع است و
- در توابعی مانند rsGetElementAt ()، "element" به معنای نمونه سازی نوع، یعنی سلولی از یک تخصیص است.
توابع زیر به شما این امکان را می دهد که ویژگی های مشخصات نوع را جستجو کنید.
یک عنصر می تواند انواع داده های ساده ای را که در C یافت می شود، به عنوان مثال یک عدد صحیح، شناور یا بولی مشخص کند. همچنین می تواند یک دسته برای یک شی RenderScript مشخص کند. برای لیستی از انواع اصلی به rs_data_type مراجعه کنید.
عناصر می توانند نسخه های بردار اندازه ثابت (از اندازه 2، 3 یا 4) از انواع پایه را مشخص کنند. عناصر را می توان با هم به عناصر پیچیده گروه بندی کرد و معادل تعاریف ساختار C را ایجاد کرد.
عناصر همچنین می توانند نوعی داشته باشند که اطلاعات معنایی است که برای تفسیر داده های پیکسلی استفاده می شود. rs_data_kind را ببینید.
هنگام ایجاد تخصیص عناصر مشترک، می توانید به سادگی از یکی از بسیاری از عناصر از پیش تعریف شده مانند F32_2 استفاده کنید.
برای ایجاد عناصر پیچیده، از کلاس جاوا Element.Builder استفاده کنید.
نمونه گیرها:
اشیاء نمونهگیر تعریف میکنند که چگونه تخصیصها را میتوان به عنوان ساختار درون یک هسته خواند. android.renderscript.S را ببینید.
توابع | |
---|---|
rsAllocationGetDimFaces | حضور بیش از یک چهره |
rsAllocationGetDimLOD | وجود سطوح جزئیات |
rsAllocationGetDimX | اندازه بعد X |
rsAllocationGetDimY | اندازه بعد Y |
rsAllocationGetDimZ | اندازه بعد Z |
rsAllocationGetElement | شیئی که سلول یک تخصیص را توصیف می کند را دریافت کنید |
rsClearObject | یک شی را رها کنید |
rsElementGetBytesSize | اندازه یک عنصر |
rsElementGetDataKind | نوعی عنصر |
rsElementGetDataType | نوع داده یک عنصر |
rsElementGetSubElement | عنصر فرعی یک عنصر پیچیده |
rsElementGetSubElementArraySize | اندازه آرایه یک عنصر فرعی از یک عنصر پیچیده |
rsElementGetSubElementCount | تعداد عناصر فرعی |
rsElementGetSubElementName | نام یک عنصر فرعی |
rsElementGetSubElementNameLength | طول نام یک عنصر فرعی |
rsElementGetSubElementOffsetBytes | افست عنصر فرعی نمونه سازی شده |
rsElementGetVectorSize | اندازه برداری عنصر |
rsIsObject | دستگیره خالی را بررسی کنید |
rsSamplerGetAnisotropy | ناهمسانگردی نمونه گیری |
rsSamplerGetMagnification | مقدار بزرگنمایی نمونه |
rsSamplerGetMinification | مقدار کوچک سازی نمونه |
rsSamplerGetWrapS | مقدار S پوشش نمونه |
rsSamplerGetWrapT | مقدار T بسته بندی نمونه |
توابع و انواع فراخوان هسته
تابع rsForEach () می تواند برای فراخوانی هسته ریشه یک اسکریپت استفاده شود.
توابع دیگر برای بدست آوردن ویژگی های فراخوانی یک هسته اجرایی مانند ابعاد و شاخص های فعلی استفاده می شوند. این توابع یک rs_kernel_context را به عنوان آرگومان می گیرند.
انواع | |
---|---|
rs_for_each_strategy_t | سفارش پردازش سلولی پیشنهادی |
rs_kernel | دسته به یک تابع هسته |
rs_kernel_context | به یک زمینه فراخوانی هسته رسیدگی کنید |
rs_script_call_t | اطلاعات تکرار سلول |
توابع | |
---|---|
rsForEach | یک هسته راه اندازی می کند |
rsForEachInternal | (Internal API) یک هسته را در اسکریپت فعلی راه اندازی کنید (با شماره شکاف) |
rsForEachWithOptions | هسته ای را با گزینه ها راه اندازی می کند |
rsGetArray0 | ایندکس در بعد Array0 برای زمینه هسته مشخص شده |
rsGetArray1 | ایندکس در بعد Array1 برای زمینه هسته مشخص شده |
rsGetArray2 | ایندکس در بعد Array2 برای زمینه هسته مشخص شده |
rsGetArray3 | ایندکس در بعد Array3 برای زمینه هسته مشخص شده |
rsGetDimArray0 | اندازه بعد Array0 برای زمینه هسته مشخص شده |
rsGetDimArray1 | اندازه بعد Array1 برای زمینه هسته مشخص شده |
rsGetDimArray2 | اندازه بعد Array2 برای زمینه هسته مشخص شده |
rsGetDimArray3 | اندازه بعد Array3 برای زمینه هسته مشخص شده |
rsGetDimHasFaces | وجود بیش از یک چهره برای زمینه هسته مشخص شده |
rsGetDimLod | تعداد سطوح جزئیات برای زمینه هسته مشخص شده |
rsGetDimX | اندازه بعد X برای زمینه هسته مشخص شده |
rsGetDimY | اندازه بعد Y برای زمینه هسته مشخص شده |
rsGetDimZ | اندازه بعد Z برای زمینه هسته مشخص شده |
rsGetFace | مختصات Face برای زمینه هسته مشخص شده |
rsGetLod | نمایه در بعد Levels of Detail برای زمینه هسته مشخص شده |
توابع ورودی/خروجی
از این توابع برای موارد زیر استفاده می شود:
- ارسال اطلاعات به مشتری جاوا، و
- تخصیص پردازش شده را ارسال کنید یا تخصیص بعدی را برای پردازش دریافت کنید.
توابع | |
---|---|
rsAlocationIoReceive | محتوای جدید را از صف دریافت کنید |
rsAlocationIoSend | ارسال مطالب جدید به صف |
rsSendToClient | ارسال پیام به مشتری، بدون مسدود کردن |
rsSendToClientBlocking | ارسال پیام به مشتری، مسدود کردن |
توابع اشکال زدایی
توابع زیر برای استفاده در طول توسعه برنامه در نظر گرفته شده است. آنها نباید در برنامه های حمل و نقل استفاده شوند.
توابع | |
---|---|
rsDebug | یک پیام و مقادیر را ثبت کنید |
توابع و انواع گرافیک
زیرسیستم گرافیکی RenderScript در سطح API 23 حذف شد.