اپن‌جی‌ال

از ویکی‌پدیا، دانشنامهٔ آزاد.

فهرست مندرجات

[ویرایش] معرفی

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

[ویرایش] محتویات 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

زبان‌های دیگر