تخفیف ویژه زمستانه پی استور

تا 60 درصد تخفیف

شامل پروژه‌ها و دوره‌های آموزشی
روز
ساعت
دقیقه
ثانیه
آخرین فرصت‌ها

با خرید اشتراک ویژه ، با هزینه بسیار کمتر به فایل های پاورپوینت دسترسی داشته باشید!

آموزش برنامه نویسی Opengl در ++Virtual C

برنامه نویسی Opengl
در این مقاله قصد داریم به آموزش برنامه نویسی Opengl در ++Virtual C بپردازیم. OpenGL مخفف کلمات Open source Graphic Library است و یک زبان برنامه برنامه نویسی نیست بلکه یک کتابخانه متن باز است که می توان از آن در زبان های برنامه نویسی استفاده کرد. در واقع توابع کتابخانه ای متنوعی در OpenGL وجود دارد که می‌توان از آن در هر زبان برنامه نویسی استفاده کرد. در این آموزش هدف ما استفاده از این کتابخانه در ++Virtual C است. پس با ادامه آموزش با ما همراه باشید.

فهرست مطالب

مقدمه برنامه نویسی Opengl

در ابتدا با نام OpenGL شروع می‌کنیم که همانطور که گفته شد مخفف Open source Graphic Library است. حتماً با نرم افزارهای متن باز یا Open Source آشنا هستید. این نرم افزارها به صورت رایگان در اختیار عموم قرار می‌گیرند و تهیه کنندگان آن‌ها سورس اصلی برنامه را بیشتر به منظور عیب یابی و کاهش خطاها و احتمالی برنامه در اختیار برنامه نویسان قرار می‌دهند تا برنامه نویسان و علاقمندان بتوانند به راحتی کد آن برنامه را ویرایش کنند.

OpenGL جزء نرم افزار متن باز به شمار می‌رود و graphic library یا همان کتابخانه گرافیکی به مجموعه کتابخانه‌ها یا کامپوننت‌هایی گفته می‌شود که برای استفاده از دستورات مخصوص گرافیکی تهیه شده است و با اضافه کردن بوسیله include از آن‌ها در برنامه اصلی استفاده می‌کنیم.

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

آموزش برنامه نویسی Opengl در ++Virtual C

پس می‌توان نتیجه گرفت 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

انواع داده ها در برنامه نویسی OpenGL

پسوندنوع دادهمعادل نوع داده در زبان Cتعریف نوع در OpenGl
b۸ بیت integersinged charGlbyte
s۱۶ بیت integershortGlshort
i۳۲ بیت integerint or longGlint, Glsizei
f۳۲ بیت ممیز شناورfloatGlfloat, Glclampf
d۶۴ بیت ممیز شناورdoubleGldouble, Glclampd
ub۸ بیت integer بدون علامتunsigned charGlubyte, Glboolean
us۱۶ بیت integer بدون علامتunsigned shortGlushort
ui۳۲ بیت integer بدون علامتunsigned int or longGluint,glenum,Glbitfleld

قالب کلی برنامه نویسی OpenGl

#include <GL/glut.h>
.
.
.
تعریف متغییرها و ثوابت
Void init()
{
مقداردهی اولیه
}
تعریف سایر توابع در صورت نیاز//
int main(int argc,char **argv)
{
فراخوانی توابع رسم و ارسال پارامتر ورودی به توابع//
Init();
glutMainLoop();
return 0;
}

آموزش تصویری نصب OpenGL در ویژوال استادیو

4 پاسخ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *