تبلیغات
مقالات تخصصی کامپیوتر - OpenGL

مقالات تخصصی کامپیوتر

شنبه 11 اردیبهشت 1389

OpenGL

نویسنده: morteza vali   طبقه بندی: Graphics، 

معرفی

Opengl.gif OpenGL به معنای کتابخانه گرافیکی منبع باز(اُپن سورس) است که توسط شرکتی به نام Sillicon Graphics در کشور ایالات متحده آمریکا ساخته شده‌است . در حقیقت این ابزار یک شتابدهنده گرافیکی است که به برنامه نویس قابلیت اجرای گرافیک با کیفیت و سرعت بالا را که در سیستم‌های عامل به صورت پیش فرض امکان آن نیست را می‌دهد . این قابلیت با ویژگی کار در 3D که GDI و دیگر سیستم‌های مشابه قابلیت کار در آن را ندارند همراه است . مثلاً اگر بخواهید در VC یک مکعب رسم کنید که بتواند با سرعتی بالا و بدون به هم ریزی نمای سه بعدی آن بچرخد باید از توابع رسم خط و نقطه در دو بعد استفاده کنید که نمی‌توان بدون پرش فریمها این مکعب را چرخاند ولی در GL فقط محیط را به صورت 3D آماده می‌کنیم و سپس شی را درون این محیط رسم می‌کنیم حال حتی اگر شی هم بچرخد دیگر فریمها پرشی نخواهند داشت .



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

واسط OpenGL بر روی سیستم های Linux، Unix، Windows و MacOS قابل پیاده سازی می‌باشد. هیچ Graphic API دیگری وجود ندارد که به این اندازه Portable باشد. همچنین با اکثر سرویس دهنده‌های محیطهای گرافیکی از قبیل Win32، MacOS، X-window system سازگار می‌باشد. توابع OpenGL را می‌توان در زبان های برنامه نویسی متنوعی از قبیل Ada، c، c++، Fortran، Python، Java و ... به کار گرفت.

ابتدایی ترین کتابخانه‌ای که برای OpenGL نوشته شد AUX نام داشت. که در سیستم های Unix مورد استفاده قرار می‌گرفت اما در محیط ویندوز اصلاً کارایی نداشت و با مشکلات متعددی روبرو می‌شد. از این جهت هیچ گاه برای نوشتن یک برنامه کاربردی مورد استفاده قرار نگرفت و تنها جنبه آموزشی داشت. اما بعدها توسط آقای Mark Kilgard در شرکت SGI کتابخانه‌ای به نام GLUT تولید شد که امروزه هم بسیاری از برنامه‌ها با استفاده از آن تولید می‌شوند. کتابخانه GLUT را می‌توان به صورت رایگان تهیه نمود. پس از مدتی تعدادی از توابع مورد نیاز که امکان تبادل با محیط سیستم عامل را فراهم کنند مانند فعال یا غیرفعال کردن یک پنجره، به آن اضافه شد.

محتویات GL

این کتابخانه شامل سه قسمت متفاوت ولی هماهنگ است که به زبان سی (C)نوشته شده‌است.

  1. کتابخانه عمومی : این کتابخانه شامل توابع و ثوابت عمومی مورد استفاده در GL است.
    1. کتابخانه عمومی زمان اجرا :opengl32.dll
    2. کتابخانه عمومی زمان ترجمه یا کامپایل : opengl32.lib
    3. کتابخانه عمومی زمان برنامه نویسی : gl.h
  2. کتابخانه کمکی : این کتابخانه شامل توابع ترسیمات غیر استاتیک و ثوابت کنترل‌های اختصاصی بر روی کارتهای گرافیکی و GDI می‌باشد .
    1. کتابخانه کمکی زمان اجرا :glu32.dll
    2. کتابخانه کمکی زمان ترجمه یا کامپایل : glu32.lib
    3. کتابخانه کمکی زمان برنامه نویسی : glu.h
  3. کتابخانه صدا : این کتابخانه شامل چندین قسمت است که به برنامه نویس قابلیت کنترل ابزار صدارا در برنامه می‌دهد . این کتابخانه با نام مستعار OpenAL در سایت OpenAL

قرار دارد و قابل بارگذاری است . همچنین می‌توانید راهنمای کامل مربوط به استاده از این کتابخانه را نیز در همین سایت بیابید .

ساختارهای برنامه نویسی

در GL متغیر نداریم ، یعنی در هیچ یک از منابع استاندارد حتی یک متغیر تعریف نشده‌است ، این بدان معنا نیست که شما نمی‌توانید از متغیر استفاده کنید بلکه بدان معنی است که خود سیلیکون متغیری در GL تعریف نکرده‌است .

در GL همواره ثوابت را به شکل زیر و با حروف بزرگ تعریف می‌کنند: GL_TEXTURE_2D همیشه ثوابت با حروف GL بزرگ شروع می‌شوند و با یک _ ادامه می‌یابند سپس نام ثابت و اگر این ثابت اندازه داشته باشد مجدداً _ و مقدار یا مشخصه ثابت قرار می‌گیرد.

در GL توابع نیز به شکل زیر تعریف می‌شوند : glVertex3f همیشه توابع با gl کوچک یا اگر از کتابخانه کمکی استفاده شوند glu شروع می‌شوند در ادامه نام تابع وارد می‌شود که در اینجا Vertex به معنی نقطه‌است و در ادامه تعداد یا مشخصه اصلی نام تابع وارد می‌شود که در اینجا 3 وارد شده و در نهایت نوع مقدار و مشخصه وارد می‌گردد که در این مثال f به معنی float یا (اعشاری) است .

در Gl تعدادی قابلیت ثابت برای کارتهای گرافیکی مختلف و جود دارد که معمولاً شرکتهای سازنده کارت گرافیکی آنها را اضافه می‌کنند .

نحوه استفاده

از این کتابخانه در همه زبانهای برنامه نویسی با قابلیت ساخت برنامه اجرایی یا Application می‌توان استفاده کرد . در اکثر این زبانها کار با GL به یک شکل است ، به طوری که شما اگر بتوانید در Visual Cpp برنامه مبتنی بر GL بنویسید می‌توانید همان برنامه را نیز در Visual Basic باز نویسی کنید . مثالهای متنوع از کاربرد GL را در اکثر زبانهای برنامه نویسی می‌توانید در سایت نئون هلیم بیابید. نحوه استفاده از GL بسیار ساده‌است که شامل مراحل زیر می‌شود(ممکن است در بعضی از زبانها این مراحل کمتر یا بیشتر باشد)این مثال برای زبانهای C & Cpp نوشته شده‌است .

  • فراخوانی منابع GL
 مثال:
#include <GL\gl.h>
  • ساخت متغیری برای جایگیری محتویات رندر و تنظیمات پیکسل
 مثال:
HGLRC hRc=NULL;
int m_PixelFormat;
  • تنظیمات پیکسل فرمت
 مثال:
PIXELFORMATDESCRIPTOR pfd
  • تنظیمات در گاه نمایش
 مثال:
این قسمت از کار باید در مرجع توابع مربوط به اندازه پنجره برنامه انجام گیرد، برای اینکار
تابع OnSize بسیار مناسب است.
استفاده از تابع فریم بندی پنجره در GL با نام ViewPort
  • تخریب GL اینکار برای زمانی انجام می‌گیرد که کاربر برنامه را می‌بندد ، حالا برنامه باید بتواند کلیه منابعی را که از سیستم در اختیار گرفته بود آزاد سازد . بهترین راه این کار استفاده از توابع wgl است.
  • ترسیم اشیاع در GL ، این بخش رندر نیز محسوب می‌شود ، زیرا ما تمامی اشیاعی که نمایش می‌دهیم را در این قسمت رسم می‌کنیم.

منابع

سایت رسمی سیلیکون گرافیک

سایت رسمی OpenGL

سایت رسمی OpenAL

سایت آموزش برنامه نویسی OpenGL

تارنویس Kiss of Linux

آمار وبلاگ

  • کل بازدید :
  • بازدید امروز :
  • بازدید دیروز :
  • بازدید این ماه :
  • بازدید ماه قبل :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :