به صورت مختصر می توان گفت WebGL یک تکنولوزی جدید برای نمایش گرافیک ۳ بعدی در صفحات وب است که همراه با HTML5 ارایه شده و تحت Java نوشته می شود. تا کنون نمایش گرافیک های بعدی تنها در سیستم های قدرتمند ممکن بود و از طرفی نیاز به کدنویسی پیچیده ای داشت. با ارایه این تکنولوژی استفاده از گرافیک ۳ بعدی خصوصا در حوزه بازی ها در وب سایت ها به راحتی امکان پذیر شده است.حال در امتداد مقاله به بررسی تفصیلی تکنولوژی webgl چیست می پردازیم.
تکنولوژی WebGL چیست ؟
WebGL (Web Graphics Library) در اصل یکLibrary است که به شما اجازه می دهد تا گرافیک ۳ بعدی ایجاد کنید بطوری که با استفاده از بخشی از منابع کامپیوتر شما بصورت زنده رندر شود. Web GL یک تکنولوژی built-in در مرورگرهای جدید است و میتوان بدون نیاز به هیچ افزونه یا Library خاصی آن را در مرورگر مشاهده کرد. این تکنولوژی کاملا Client Side بوده و بر روی مرورگر کاربر اجرا می شود.
در شکل زیر می توانید ساختار وب سایت های قدیمی را در کنار ساختار وب سایت های دارای تکنولوژی Web GL مشاهده کنید :
هر چند WebGL یک API جاوااسکریپت برای رندر گرافیک سه بعدی و دوبعدی در مرورگرهای سازگار است، اما کارایی آن وابسته به پشتیبانی کارت گرافیک سیستم از این فناوری میباشد. شما میتوانید با مراجعه به وبسایت مربوطه، آزمایش کنید که آیا سیستم و مرورگرتان از WebGL پشتیبانی میکنند یا خیر. برای کسب اطلاعات بیشتر در مورد جاوااسکریپت، مطالعه مقاله مربوطه توصیه میشود.
المانهای WebGL قابلیت تلفیق با دیگر المانهای HTML5 را دارند و میتوان از آنها در بخشهای مختلف صفحات وب استفاده کرد. جهت آشنایی بیشتر با HTML5، مطالعه مقاله مرتبط پیشنهاد میگردد. برنامههای WebGL شامل کدهای کنترلی جاوا و کدهای شیدر اجرا شده توسط کارت گرافیک هستند. WebGL یک فناوری جاوااسکریپتی مبتنی بر OpenGL است که از المان Canvas برای نمایش محتوا بهره میبرد. این فناوری بر پایه OpenGL ES 2.0 برای دستگاههای موبایل بنا شده و بنابراین با هر پلتفرمی که از OpenGL پشتیبانی کند، سازگار است.
WebGL از OpenGL ES 2.0 اقتباس شده و توابع رندر مشابهی را اما در قالب محتوای HTML ارائه میدهد. به عبارت دیگر، WebGL برای رندر المانهای Canvas در HTML طراحی گردیده است. این فناوری همانند سایر APIهای وب، ویژگی پردازش لحظهای را دارد. با توجه به اینکه WebGL ویژگیهای خود را از OpenGL ES 2 به ارث برده، برای برنامهنویسانی که با OpenGL در رایانههای رومیزی یا کدنویسی وب تحت OpenGL ES آشنا هستند و میخواهند به حوزه WebGL وارد شوند، مسیر آشنایی هموار است.
در حال حاضر گزینههای متعددی برای طراحی سه بعدی نظیر CSS، Canvas، SVG و افزونههایی مانند Silverlight و Flash وجود دارد. ممکن است این سوال در ذهن شما نقش ببندد که WebGL چگونه میتواند جایگزینی برای آنها باشد و چرا باید آن را فرا گیرید.
منظور از اجرای Task ها در WebGL چیست؟
طراحی و اجرای task ها در Web GL به گونه ای است که در برخی از تکنولوژی های دیگر قابل انجام نیست، و یا در برخی از آنها اجرای چنین task هایی بسیار پیچیده و زمان بر است، همانند نورپردازی و افکت های انعکاسی در SVG.
عملکرد WebGL
WebGL بطور باور نکردنی سریع است و به درستی از قدرت سخت افزاری سیستم کاربر استفاده می کند. همین ویژگی WebGL باعث شده برای طراحی بازی ها و جلوه های ویژه بصری بسیار مناسب باشد. طراحی WebGL بر داشتن عملکرد بالا پایه گذاری شده و در بسیاری از موارد عملکرد آن بسیار بیشتر از تکنولوژی های دیگر است.
Shader در WebGL
(shader) برنامه سادهای است که در رابط گرافیکی اجرا میشود و به سیستم میگوید چگونه هر پیکسل را نمایش دهد. این برنامهها به دلیل استفاده معمول برای کنترل نور و جلوههای سایهزنی، shader سایه (shadow shader) نامیده میشوند.
اپلیکیشنهای WebGL میتوانند از برنامههای کوچکی به نام شیدرها (shaders) برای ایجاد جلوههای پیچیده بهره بگیرند. با یک شیدر ساده شاید بتوان یک افکت رنگی سپیا را خلق کرد، اما در پیادهسازی یک طراحی پیچیده میتوان از آنها برای شبیهسازی جلوههایی نظیر آب یا آتش استفاده نمود.
ممکن است برنامهنویسان با تجربه به این نکته اشاره کنند که تاکنون تلاشهای زیادی برای وارد کردن فناوریهای سه بعدی به مرورگرها انجام شده است، اما تمامی آنها در حال حاضر به فراموشی سپرده شدهاند.
open gl چیست؟
OpenGL یک رابط نرم افزاری است که به یک برنامه نویس اجازه می دهد تا با سخت افزار گرافیکی ارتباط برقرار کند.
مزایا WebGL
- نکته اول اینکه WebGL بر مبنای OpenGL است.از جمله کاربرد OpenGL به عنوان یک فریم ورک برای طراحی اپلیکیشن های ۳بعدی معرفی شده که تا کنون آزمون خود را به خوبی پس داده است.
- زمان عرضه WebGL همزمان با پیشرفت هایی در عملکرد مرورگرها، افزایش سرعت سیستم ها و ظهور انقلابی JavaScript بوده است.
- ترکیب پذیری – WebGl می تواند با دیگر تکنولوژی های تحت وب ترکیب شود.
- Web GL این قابلیت را دارد که بر روی بسیاری از پلتفرم های متفاوت (لینوکس،ویندوز،مکینتاش و . . . ) و انواع مرور گرها اجرا شود. نکته ای که آن را برتر می کند این است که حتی در پلتفرم های دستگاه های موبایل مانند IOS 8 نیز از آن پشتیبانی می شود.
- یک پروژه کاملا منبع باز است و توسط عرضه کننده خاصی کنترل نمی شود.
کاربرد WebGL
داده های گرافیکی
برخی از داده ها وقتی در فضای سه بعدی دیده می شوند کاربردی تر هستند، این موارد را میتوان در اسکن های MRI یا نقشه های مهندسی مشاهده کرد.
بازی ها
بازی های ۳ بعدی شاید واضح ترین مورد استفاده آن باشد. لازم به ذکر است که فریم ورک های طراحی بازی در آینده این قابلیت را خواهند داشت که بتوان آنها را در WebGL به راحتی Import کرد.
ایجاد صفحات تعاملی
این امر به کاربران شما این امکان را میدهد که بتوانند محصولاتتان را از هر زاویه مشاهده کنند.
کلام آخر
با این وجود با اینکه WebGL برای طراحی های گرافیکی بسیار مناسب است، اما مواردی وجود دارد که استفاده از تکنولوژی های دیگر (مانند SVG) گزینه بهتری است. به موارد ذیل دقت کنید :
- اپلیکیشن ها و بازی های ۲ بعدی ساده. مطمئنا می توانید با استفاده از WebGL به طراحی های ۲ بعدی هم بپردازید، اما استفاده از Canvas شاید گزینه بهتری باشد زیرا پشتیبانی بهتری از آن می شود و Library های ۲ بعدی زیادی نیز مختص آن وجود دارد.
- جستجو – در حال حاضر محتوای WebGL توسط موتور های جستجو قابل فهم نیست بنابراین استفاده از SVG انتخاب بهتری است.
- ترکیب پذیری با DOM – می توان WebGL را در تمامی صفحات وب قرار داد اما هیچ روشی برای اضافه کردن Handler ها مشابه SVG ندارد.
- مرورگرهای قدیمی – WebGL برای کاربرانی که مرورگرهای قدیمی و سیستم های ضعیفی دارند مناسب نیست.
- محیط های بسیار امن – WebGL نیز دارای ضعف های امنیتی است. بیشتر ضعف های امنیتی WebGL تاکنون برطرف شده اند ولی در محیط هایی که نیاز به امنیت بسیار بالایی دارند استفاده از آن توصیه نمی شود.