در این آموزش درباره RenderScript در اندروید صحبت میکنیم. معمولاً برنامه های اندروید به گونه ای طراحی می شوند که حداقل منابع را مصرف کنند. اما برخی از برنامه ها مانند برخی از بازی های سه بعدی نیاز به پردازش سطح بالایی در اندروید دارند. برای ارائه این برنامه ها اندروید با کارایی بالا RenderScript را معرفی کرد. این فریم ورک مبتنی بر اندروید است که برای اجرای برنامه هایی که وظایف محاسباتی بسیار بالایی را انجام می دهند استفاده می شود.
توسعه این فریم ورک توسط اندروید در Native Development Kit (NDK) انجام شده است. RenderScript برای برنامه هایی که انواع زیر را انجام می دهند بسیار مفید است :
- رندر 3D
- پردازش تصاویر
- عکاسی محاسباتی
-
کامپیوتر ویژن
نحوه عملکرد RenderScript
چارچوب RenderScript اساساً مبتنی بر محاسبات موازی داده است. این برنامه حجم کاری برنامه شما را روی تمام پردازنده های موجود در دستگاه شما مانند CPU های چند هسته ای یا GPU پخش می کند. این پخش موازی حجم کار، برنامه نویس را از تنش تعادل بار و زمان بندی کار رها می کند. شما می توانید بدون نگرانی از قدرت محاسباتی، الگوریتم های دقیق و پیچیده تری در برنامه های خود با استفاده از این فریم فورک پیاده سازی کنید.
چگونه شروع کنیم
برای استفاده از فریم ورک RenderScript باید دو مورد زیر را داشته باشید:
- یک RenderScript Kernel
- API های RenderScript
RenderScript Kernel
kernel برنامه ای است که دستورالعمل های پردازش داده ها را مدیریت می کند و حجم کاری واحدهای پردازش مرکزی را مدیریت می کند. kernel بخش اساسی سیستم عامل است.
به طور مشابه برای اجرای چارچوب RenderScript، ما به یک اسکریپت نوشته شده به نام Kernel نیاز داریم تا تمام درخواست های پردازش داده از برنامه ما را مدیریت کند و از ویژگی های بیشتر سیستم عامل اندروید ارائه شده توسط NDK استفاده کند و همانطور که قبلا ذکر شد که توسعه RenderScript در کیت توسعه Native اندروید انجام می شود.
اسکریپت kernel در استاندارد C-99 زبان C نوشته شده است و این استاندارد قبلا با زبان C++ توسعه داده شده بود. یک فایل RenderScript kernel معمولا در فایلی با پسوند rs قرار می گیرد و هر فایل به عنوان یک اسکریپت نامیده می شود. یک اسکریپت Kernel Render Script می تواند حاوی عناصر زیر باشد :
عناصر و توضیحات | ردیف |
اعلام یک زبان
این نسخه از زبان RenderScript Kernel استفاده شده در این اسکریپت را اعلام می کند. |
1 |
اعلام یک package
این اعلان نام بسته کلاس جاوا را که تحت تأثیر این کد هسته قرار می گیرد نامگذاری می کند. |
2 |
توابع فراخوانی
می توانید این توابع فراخوانی را از کد JAVA خود با آرگومان های دلخواه و در نقطه دلخواه فراخوانی کنید. |
3 |
متغیرهای global اسکریپت
اینها دقیقاً مانند متغیرهایی هستند که در زبان برنامه نویسی C و C++ تعریف شده اند. شما می توانید با استفاده از کد جاوا به این متغیرها و داده ها دسترسی داشته باشید. |
4 |
در ادامه یک نمونه کد kernel را آماده کرده ایم :
uchar4 __convert__((kernel)) invert(uchar4 in, uint32_t x, uint32_t y) { uchar4 out = in; out.r = 255 - in.r; out.g = 255 - in.g; return out; }
API های RenderScript
اگر می خواهید از RenderScript در API خود استفاده کنید، می توانید این کار را به دو روش زیر انجام دهید :
API ها و توضیحات | ردیف |
android.renderscript
این API در دستگاههای دارای Android نسخه 3.0 و بالاتر در دسترس است. |
1 |
android.support.v8.renderscript
این API در دستگاههای دارای Android نسخه 2.2 و بالاتر در دسترس است. |
2 |
برای کتابخانه پشتیبانی اندروید ابزارهای زیر مورد نیاز است :
- آخرین نسخه Android SDK Tools
- آخرین نسخه Android SDK Build-tools
نحوه استفاده از کتابخانه پشتیبانی Render Script
ابتدا فایل project.properties را در پروژه خود باز کنید و خطوط زیر را در فایل اضافه کنید :
import android.support.v8.renderscript.*;
در زیر اهداف خواص موجود در بالا که در فایل project.properties اضافه می کنیم مورد بررسی قرار میدهیم:
مشخصات و توضیحات پروژه
|
ردیف |
renderscript.target
این نسخه کد بایتی را که باید تولید شود را مشخص می کند. |
1 |
renderscript.support.mode
این یک نسخه سازگار را که برای کد بایت تولید میشود را مشخص می کند. |
2 |
sdk.buildtools
این نسخههای ابزارهای ساخت Android SDK را برای استفاده و روش پیاده سازی مشخص میکند. |
3 |
حال توابع موجود در Kernel Render Script خود را فراخوانی کنید و الگوریتم هایی با پیچیدگی بالا را در برنامه خود اجرا کنید.