مقدمه برنامه نویسی Opengl
در ابتدا با نام OpenGL شروع میکنیم که همانطور که گفته شد مخفف Open source Graphic Library است. حتماً با نرم افزارهای متن باز یا Open Source آشنا هستید. این نرم افزارها به صورت رایگان در اختیار عموم قرار میگیرند و تهیه کنندگان آنها سورس اصلی برنامه را بیشتر به منظور عیب یابی و کاهش خطاها و احتمالی برنامه در اختیار برنامه نویسان قرار میدهند تا برنامه نویسان و علاقمندان بتوانند به راحتی کد آن برنامه را ویرایش کنند.
OpenGL جزء نرم افزار متن باز به شمار میرود و graphic library یا همان کتابخانه گرافیکی به مجموعه کتابخانهها یا کامپوننتهایی گفته میشود که برای استفاده از دستورات مخصوص گرافیکی تهیه شده است و با اضافه کردن بوسیله include از آنها در برنامه اصلی استفاده میکنیم.
کتابخانهها یا همان فایلهای با پسوند lib که مخفف library میباشند به منظور آسانتر شدن کار برنامهنویسان در موقع برنامه نویسی ایجاد و تهیه میشوند، به این صورت که مثلاً برنامه نویسی داخل برنامههای خود از تابع خاصی چندین بار به صورت متوالی استفاده میکند، خوب نوشتن این تابع خاص به این تعداد در کد اصلی برنامه حجم فایل نهایی را بالا برده و البته وقت برنامه نویس را هم خواهد گرفت، اینجاست که کتابخانهها یا libها وارد عمل میشوند و تابع خاص را داخل خود قرار میدهند تا موقع نیاز به تابع از آن استفاده شود.
پس میتوان نتیجه گرفت OpenGL یک زبان برنامه نویسی نیست بلکه یک سری کتابخانه از پیش تعریف شده میباشد که کار این کتابخانه ارتباط راحتتر با بخش سخت افزاری گرافیک سیستم میباشد. برای اینکه بتوانیم با سخت افزارهای موجود در سیستم خود مثل کارت شبکه ، کارت گرافیک، … به صورت درست و صحیح ارتباط برقرار کنیم، احتیاج به رابطهایی داریم که بتوانند این کار را به درستی انجام دهند. این کار توسط APIها انجام میشود. APIها رابطهای نرم افزاری هستند که زبان سیستم ( زبان ماشین ) و چگونگی ارتباط با سخت افزار را میدانند.
تاریخچه برنامه نویسی Opengl
برای آموزش برنامه نویسی Opengl بهتر است تاریخچهای در مورد اوپن جی ال بدانیم. سازنده OpenGL یا بهتر بگوییم توسعه دهنده و بهینه کننده آن شرکت Graphics Silicon است. خود OpenGL توسعه یافته کتابخانه دو بعدی IRISGL که آن هم محصول شرکت SGL بود، میباشد . شرکتهای دیگری نیز به توسعه این محصول متن باز کمک کردهاند از جمله شرکت Labs3 D که تکنیک و قابلیت سایه زنی را به OpenGL اضافه نمود.
در سالهای اخیر کتابخانههای OpenAL و OpenIL نیز به موازات OpenGL در حال پیشروی و گسترش هستند که اولی برای کنترل و مدیریت سخت افزارهای صوتی و ایجاد صداهای سه بعدی و دومی برای مدیریت و کنترل دستگاههای ورودیها ایجاد شدهاند.
انواع گرافیک کامپیوتری
قبل از برنامه نویسی Opengl در ++Virtual C بایستی اطلاعاتی در مورد انواع گرافیک کامپیوتری داشته باشید. به طور کلی دو نوع گرافیک کامپیوتری وجود دارد: نوع اول گرافیک رستری Raster است که به گرافیک Bitmap نیز مشهور است. البته گاهی اوقات به گرافیک رستری گرافیک پیکسلی نیز میگویند و نوع دوم آن گرافیک وکتور Vector یا برداری میباشد. که در ادامه به تشریح هرکدام برای برنامه نویسی openGl میپردازیم.
۱- گرافیک پیکسلی یا رستری
این نوع گرافیک از خانههای پیکسلی که دارای درجه مشخصی از یک رنگ میباشند تشکیل شده است و وقتی این پیکسلها در کنار یکدیگر با درجه رنگهایی مختلف از هم، قرار میگیرند، تصاویر را تشکیل میدهند. در گرافیک پیکسلی به دلیل اینکه شما با رنگ پیکسلها سرو کار دارید، قادر به ویرایش، حذف یا ایجاد تصویر یا عکس نیستید. تنها میتوانید عکس یا تصاویر دیجیتال را توسط دسترسی به پیکسلهای رنگی آن، ویرایش نمایید.
آنچه در گرافیک رستری اهمیت دارد، تعداد پیکسلهای رنگی در اینچ میباشد، زیرا این تعداد، کیفیت رنگی و وضوع تصویری عکس دیجیتال را مشخص میکند. به تعداد پیکسلهای رنگی در اینچ، رزولوشن میگویند و مقدار رزولوشن، همان مقدار پیکسلها را در واحد اینچ مشخص می کند که اصطلاحاً به آن واحد dpi می گویند (Dot Per Inch).
همین dpi است که باعث می شود وقتی شما یک تصویر رستری را بزرگ نمایی می کنید، کیفیت تصویر پایین تر می آید. زیرا هرچه هم که آنرا بزرگ تر کنید نمی توانید رزولوشن یا تعداد پیکسل های آن را در واحد اینچ افزایش دهید. کیفیت این تصاویر با سایز ارتباط مستقیم دارد.
۲- گرافیک وکتور یا برداری
این نوع گرافیک، گرافیکی رایانهای است که با فرمولهای ریاضی سر و کار دارد. از خطها، منحنیها و اشکالی که دارای بعد و مختصات ریاضی میباشند و مکان آنها با X و Y تعریف میگردد. دارای طول و عرض ریاضی میباشند و رزولوشن آنها با تغییر سایز، تغییر نمییابد. بنابراین کیفیت تصاویر در هر سایزی یکسان میماند و این کار از طریق محاسبات ریاضی انجام میشود. این گرافیک یکی از بهترین و پرکاربردترین انواع گرافیک کامپیوتری است، برای کار تصویر سازی استفاده میشود و طراحی آرم ها و گاهی تصویر سازی کتابهای کودک و … توسط برنامه های وکتوری انجام میشود.
قوانین برنامه نویسی OpenGL
- دستورات OpenGL با پیشوند gl شروع میشوند و با یک حرف بزرگ ادامه مییابند مانند دستورهای ()glBegin و ( )glutDisplayFunc که با gl شروع شده و با یک حرف بزرگ ادامه پیدا میکنند.
- ثابتها با پیشوند _GL شروع میشود و تمام حروف بعد از آن حروف بزرگ است مانند GL_COLOR_BUFFER_BIT
- بعضی از دستورات نیز با یک عدد و چندین حرف در انتها براd یادآورd تعداد و نوع آرگومانهاd ورود خاتمه مییابند .براs مثال در دستور ()glVertex3fv عدد ۳ به معنای وجود ۳ آرگومان ورودی و f به معنای اعشاری بودن ورودیها و v به معنای برداری بودن ورودیها است.
انواع داده ها در برنامه نویسی OpenGL
پسوند | نوع داده | معادل نوع داده در زبان C | تعریف نوع در OpenGl |
---|---|---|---|
b | ۸ بیت integer | singed char | Glbyte |
s | ۱۶ بیت integer | short | Glshort |
i | ۳۲ بیت integer | int or long | Glint, Glsizei |
f | ۳۲ بیت ممیز شناور | float | Glfloat, Glclampf |
d | ۶۴ بیت ممیز شناور | double | Gldouble, Glclampd |
ub | ۸ بیت integer بدون علامت | unsigned char | Glubyte, Glboolean |
us | ۱۶ بیت integer بدون علامت | unsigned short | Glushort |
ui | ۳۲ بیت integer بدون علامت | unsigned int or long | Gluint,glenum,Glbitfleld |
قالب کلی برنامه نویسی OpenGl
#include <GL/glut.h> . . . تعریف متغییرها و ثوابت Void init() { مقداردهی اولیه } تعریف سایر توابع در صورت نیاز// int main(int argc,char **argv) { فراخوانی توابع رسم و ارسال پارامتر ورودی به توابع// Init(); glutMainLoop(); return 0; }
4 پاسخ
من این گزینه هارو ندارم توی برنامه باید چیکار کنم؟
ممنون که نصب OpenGL در ویژوال استادیو رو به صورت تصویری توضیح دادین. مشکلی که تو نصب داشتم حل شد.
مطالب عالی بود دمتون گرم
نظرات و دیدگاه های خود را برای هرچه بهتر قرار دادن مطالب با ما در میان بگذارید.