OpenGL چیست؟

OpenGL چیست؟

نویسنده: alghadir منتشر شده در: آموزشی تاریخ ایجاد: 2016-01-09 بازدیدها: 2006 نظرات: 0

بتدا از نام OpenGL شروع می کنیم که نشان دهنده مفهوم آن نیز می باشد، OpenGL یعنی Open source Graphic Library ، خوب ابتدا مختصری درباره نرم افزار های open source یا همان متن باز توضیح می دهم:

حتما با نرم افزار های متن باز یا به اصطلاح اصلی open source آشنایی دارید ( حداقل نام آن به گوشتان رسیده است ! ) و می دانید که این نرم افزار ها به صورت رایگان در اختیار عموم  قرار می گیرند و تهیه کننده گان آنها سورس اصلی برنامه را بیشتر به منظور عیب یابی و کاهش خطا ها و bug های احتمالی برنامه در اختیار برنامه نویسان قرار می دهند تا برنامه نویسان و علاقمندان بتوانند به راحتی کد آن برنامه را ویرایش کرده و تغییرات دلخواه را روی آن انجام دهند ( یکی از معروفترین برنامه های open surce سیستم عامل لینوکس است که حتما نام آن را شنیده اید و البته پیشرفت ها و موفقیت های جدید آن را ، که مهمترین عامل این پیشرفت ها همین متن باز بودن لینوکس بوده و است ).

opengl هم همانطور که از نام آن مشخص است جزء نرم افزار متن باز به شمار  می رود که یک از مزیت ها و امتیازات آن نیز به شمار می رود ، حال نوبت به graphic library می رسد :

 

graphic library یا همان کتابخانه گرافیکی به مجموعه کتابخانه ها یا کامپوننت های گفته می شود که برای استفاده از دستورات مخصوص گرافیکی تهیه شده است و با الصاق ( include ) آن ها به برنامه اصلی ( هنگام برنامه نویسی ) می توانیم ، از دستورات گرافیکی مجاز برای ایجاد رابطه با بخش گرافیک سیستم استفاده نماییم ( از جمله کار هایی که با گرافیک سیستم سر و کار دارد نوشتن بازی ها و اشکال سه بعدی و دو بعدی و کلا برنامه هایی که با مانیتور در ارتباط باشند )

نکته آموزشی داخل پارانتز (( کتابخانه ها یا همان فایل های با پسوند lib که مخفف شده library می باشد ، به منظور آسان تر شدن کار برنامه نویسان در موقع برنامه نویسی ایجاد و تهیه می شوند ، به این صورت که مثلا برنامه نویسی داخل برنامه های خود از تابع خاصی چندین بار ( شاید هم صد ها و هزاران بار )  به صورت متوالی استفاده می کند ، خوب نوشتن این تابع خاص به این تعداد در کد اصلی برنامه حجم فایل نهایی را بالا برده و البته وقت برنامه نویس را هم خواهد گرفت ، اینجاست که کتابخانه ها یا lib ها وارد عمل می شوند و تابع خاص را داخل خود قرار می دهند تا موقع نیاز به تابع از آن استفاده شود ))

این هم از مفهوم graphic library ، حال شما با مفهوم اسم OpenGL یا همان Open source Graphic Library آشنایی کامل را دارید .

پس در اینجا نتیجه می گیریم که OpenGL یک زبان برنامه نویسی نیست ، یک سری کتابخانه از پیش تعریف شده می باشد  که  کار این کتابخانه ارتباط راحت تر با بخش سخت افزاری گرافیک سیستم می باشد ، برای درک بیشتر این مطلب باید توضیحی هم درباره رابط های نرم افزاری یا همان API ها بدهم :

برای اینکه بتوانیم با سخت افزار های موجود در سیستم خود مثل کارت شبکه ، کارت گرافیک ، ...  به صورت درست و صحیح ارتباط برقرار کنیم  ( به زبان خود ماشین ) احتیاج به رابط هایی داریم که بتوانند این کار را به درستی انجام دهند ، فرض کنید یک فارسی زبان ( که زبان دیگری هم نمی داند ) با یک انگلیسی زبان ( که او هم زبان فارسی را نمی داند ) برخورد می کنند و می خواهند با هم صحبت کنند  ، به نظر شما چاره کار چیست ؟ خوب اولین و تنها گزینه یک مترجم می باشد که هم زبان فارسی بداند و هم زبان انگلیسی ، حال آن دو به راحتی می توانند با هم مکاتبه داشته باشند . در مورد کامپیوتر هم دقیقا به همین صورت است ، نرم افزار و سخت افزار کامپیوتر زبان هم دیگر را نمی دانند و احتیاج به یک سری مترجم هایی به نام API دارند .

API ها رابط های نرم افزاری هستند که زبان سیستم ( زبان ماشین ) و چگونگی ارتباط با سخت افزار را می دانند . به عنوان مثال من برنامه نویس اگر بخواهم یک پیکسل از مانیتور را روشن کنم  به API مربوطه فرمان می دهم که این کار را ( با زبانی که بلد هستی ) برای من انجام بده و مستقیم با سخت افزار صحبت نخواهم کرد ، API مربوطه دستور را گرفته و  به سخت افزار می رساند ، به همین راحتی ...

API های مختلفی برای بخش های مختلف سخت افزار وجود دارد ، اما در اینجا و این مقاله API  های گرافیکی مد نظر ما می باشد ، که معروفترین آنها OpenGl و DirectX  می باشند  .

البته سخت افزار های موجود نیز باید از API  ها پشتیبانی کنند ، که بعضی شرکت هاس سازنده سخت افزار و کارت های گرافیکی از API های OpenGL پشتیبانی و همایت می کنند و بعضی هم از DirectX که محصول شرکت ماکروسافت است . هر یک از این واسط های نرم افزاری OpenGl و DirectX  معایب و مزایای خواص خود را دارند که در اینجا قصد مقایسه این دو را ندارم .

تاریخچه و نحوه تکامل OpenGl  :  
سازنده OpenGL یا بهتر بگوییم توسعه دهنده و بهینه کننده آن شرکت Silicon Graphics  می باشد  ( که به اختصار SGI  نیز نامیده می شود و یکی از بزرگان صنعت گرافیک کامپیوتری می باشد ) ، خود OpenGL  توسعه یافته کتابخانه دوبعدی IRIS GL که آن هم محصول شرکت SGL بود ، می باشد . شرکت های دیگری نیز به توسعه این محصول متن باز کمک کرده اند از جمله شرکت 3D Labs که تکنیک و قابلیت سایه زنی را به OpenGL اضافه نمود .  در سالهای اخیر  کتابخانه های OpenAL  و OpenIL نیز به موازات OpenGL در حال پیشروی و کسترش هستند که اولی برای کنترل و مدیریت سخت افزار های صوتی (Audio) و ایجاد صدا های سه بعدی و دومی برای مدیریت و کنترل دستگاه های ورودی ( Input ) ها ایجاد شده اند .

رقیب اصلی OpenGL  همان DirectX محصول شرکت Microsoft می باشد که در سال 1995 وارد عرصه رقابت API ها شد ، در اوایل رقابت بین این دو  اپن جی ال کاملا یک سر و گردن از حریف خود جلو بود ، اما کار به همین روال پیش نرفت و شرک ماکروسافت یا استفاده از قدرت تجاری خود توانست از رقیب خود جلو بزند ،  البته متن باز بودن OpenGL هم بی تقصیر نبود به گونه ای که ماکروسافت از این ویژگی استفاده می کرد و محصولات خود را تقریبا مشابه  با محصولات OpenGL ارائه می داد تا اینکه در تاریخ  2000 میلادی DirectX 8 منتشر شد که امکانات بیشتر و بهتری نسبت به OpenGL داشت ، در این برهه زمانی بود که OpenGL از رقیب خود عقب افتاد ولی همچنان رقابت بین این دو ادامه دارد .

در آخر هم نام دو کتاب درباره OpenGl  که توسط شرکت  SGI تهیه و منتشر شده است را ذکر می کنم ، اولی کتابی با عنوان  OpenGL Red Book  می باشد که به توضیح و تشریح اپن جی ال اختصاص داده شده است و کتاب دوم با عنوان OpenGL Blue Book که مرجع دستورات این کتابخانه می شود.