تبليغاتX
OpenGL & Computer graphics - مقالات آموزش OpenGL قسمت سوم

OpenGL یک API است نه یک زبان برنامه نویسی :

 

OpenGL یک API است نه یک زبان برنامه نویسی. OpenGL یک رابط برنامه نویسی است. هر زمان که ما میگوییم که این برنامه بر اساس OpenGL است یا OpenGL Based یا این که این یک برنامه OpenGL است منظورمان اینست که این برنامه در یک زبان برنامه نویسی مانند C و یا C++ و یا Java نوشته شده که تعداد یک و یا بیشتر از توابع کتابخانه OpenGL را فراخوانی میکند.

 

ما نمیگوییم که برنامه تنها از OpenGL برای طراحی استفاده میکند ممکن است که ما از بهترین خصوصیات دو بسته مختلف گرافیکی استفاده کنیم. ممکن است ما از OpenGL برای انجام تعدادی از وظایف ویژه و از GDI برای کارهای دیگری استفاده کنیم. تنها استثنا در این مورد GLSL یعنی همان زبان برنامه نویسی سایه ها در OpenGL میباشد که بعدها در آموزشهایمان تدریس خواهد شد.

 

به عنوان یک API کتابخانه OpenGL از شیوه صدا زدن تابع در C یا C++ پیروی میکند. آموزشهای ما بر مبنای زبان  C میباشد. اما  C++ نیز میتواند به سادگی به توابع API مانند C دسترسی پیدا کند. در حقیقت اگر شما با C++ آشنا هستید هیچ گونه مشکلی با آموزشهای ما نخواهید داشت. OpenGL در کلیه زبانهای برنامه نویسی از قبیل C و C++ و VB و C# و Delphi و Java و ... قابل استفاده است.

 

کتابخانه ها و فایلهای سر آیند :

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

در آخر همین مقاله توضیح میدهم که چرا پیاده سازی مایکروسافت تنها بدرد لای جرز دیوار میخورد و ما باید برای استفاده از قابلیت های OpenGL 2 در ویندوز چکار کنیم. البته این نظر شخصی من یعنی ساسان میباشد.

پیاده سازی مایکروسافت در فایل OpenGL32.dll قرار دارد که یک کتابخانه پویا میباشد و در پوشه c:\windows قرار دارد. در بیشتر پلتفرم ها کتابخانه OpenGL همرا با یک کتابخانه سودمند کمکی ارائه میشود که به نام GLU معروف است.که در ویندوز با نام Glu32.dll ارائه شده و در آدرس c:\windows قرار دارد. این کتابخانه سودمند مجموعه ای از توابع است که وظایف مشترکی را انجام میدهند مانند محاسبات ماتریکس های ویژه و همچنین پشتیبانی از کلیه از انواع مختلی از منحنی ها و سطوح پیچیده را مهیا میکنند.

مرحله تنظیم کامپایلر برای لینک کردن کتابخانه صحیح از محیطی به محیط دیگر متفاوت است اما ما این مرحله را در آموزش بعدیمان توضیح خواهیم داد.

نمونه های اولیه برای کلیه توابع OpenGL و انواع داده و ماکروها در فایل gl.h قرار دارد. محیط برنامه نویسی مایکروسافت این فایل را دارد. همچنین نمونه های اولیه توابع کتابخانه کمکی سودمند OpenGL در فایل glu.h قرار دارد. این فایلها معمولا در مسیر /include محیط برنامه نویسی شما قرار دارد. برای مثال قطعه کد زیر طریقه استفاده از OpenGL را در یک برنامه نمونه ویندوز نمایش میدهد.

 

#include <windows.h>  

#include <GL/gl.h>    

#include <GL/glu.h>    

 

و اما حالا میرسیم به توضیحاتی که قرار بود من در مورد پیاده سازی مایکروسافت انحصارطلب پدر سوخته از OpenGL بدهم.

در محیط برنامه نویسی ویژوال استدیو اگر خوب به فایلهای gl.h و glu.h دقت کنید متوجه میشوید که این فایلها نهایتا تا OpenGL 1.1 را ساپورت میکند و همینطور فایل opengl32.dll که آن نیز یک پیاده سازی بر مبنای OpenGL 1.1 میباشد. اما این به نظر شما یعنی چه. این یعنی مایکروسافت انحصار طلب چون طاقت دیدن حریف را ندارد با این کار سعی کرده پشتیبانی خود را از OpenGL محدود کند تا توسعه دهندگان به استفاده از دایرکت ایکس تشویق شوند. اما کور خوانده است. این دلیل نمیشود که چون مایکروسافت در محیط برنامه نویسی اش از OpenGL 2 پشتیبانی نمیکند ما نتوانیم از OpenGL 2 استفاده کنیم. حالا چاره چیست. شرکت هایی مانند nVIDIA و ATI هر کدام OpenGL 2 را درقالب یک فایل اکستنشن ایجاد کرده اند که شما با اضافه کرد و الحاق آن به ابتدای برنامه خود میتوانید از قابلیتها و توابع OpenGL 2 استفاده کنید البته مشروط بر این که کارت گرافیک شما از OpenGL به صورت سخت افزاری پشتیبانی نماید که دیگر امروزه تقریبا همه کارتها این ویژگی را دارند.

مثلا من در کامپیوترم یک کارت Geforce 5200 دارم که تا OpenGL 1.5 را ساپورت میکند. خوب من حالا با اضافه کردن فایل glext.h به ابتدای برنامه ام میتوانم از قابلیتهای OpenGL 1.5 استفاده کنم.

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

 

البته یک راه بهتر هم وجود دارد و آن استفاده از ابزارهایی مانند G LEEو یا GLEW میباشد. این ابزار ها شامل کلیه توابع و قابلیتهای OpenGL 2  به همراه تعداد زیادی نزدیک به 340 اکستنشن از شرکت های مختلف میباشد که طریقه استفاده از آنها در سایت خودشان نوشته شده است و بسیار آسان میباشد. و این یعنی مشت محکمی بر دهن مایکروسافت انحصار طلب

 

http://elf-stone.com/glee.php

این آدرس سایتی است که شما میتوانید ابزار GLEE را به حجم 354 کیلو بایت از آن دانلود کنید این بسته شامل چندین فایل به نامهای glee.h و wglee.h و کتابخانه های مربوطه میباشد که شما با ضمیمه کرده آنها به ابتدای برنامه خود میتوانید از کلیه توابع و قابلیتهای OpenGL 2.0 استاندارد به اضافه 340 عدد اکستنشن مختلف از nVIDIA و ATI و ARB دسترسی داشته باشید.

 

 یک ابزار مفید دیگر که این کار را برای شما انجام دهد GLEW میباشد که روش استفاده از آن درست مانند GLEE میباشد و البته در سایت خودش هم آموزش داده است.این هم آدرس سایت :

http://glew.sourceforge.net

 

 و اما دوستان میخواهم یک نصیحت دوستانه به شما بکنم اگر دوست دارید به جای ویژوال استدیو دات نت از ابزارهای دیگری مانند CodeBlock و یا Dev-cpp برای انجام آموزشهایمان استفاده کنید البته این به هیچ وجه الزامی نیست. اما این محیط های برنامه نویسی علاوه به ساپورت نسخه های جدید OpenGL به صورت فایل glext.h حاوی مثالهای زیادی از OpenGL هستند.من خودم بشخصه برای تمام کارهای برنامه نویسی از Dev-cpp IDE که به همراه کامپایلر Mingw و به صورت رایگان در اختیار همه قرار داده شده استفاده میکنم.  Codeblock هم به همین صورت است رایگان است و همراه با کامپایلر Mingw ارائه میشود که نسخه تحت ویندوز gcc میباشد.

 

برای دانلود آنها میتوانید به این سایتها مراجعه کنید :

http://www.codeblocks.org

http://www.bloodshed.net

تا آموزشی دیگر خدانگهدار.

 

 

منبع : کتاب OpenGL SuperBible 3rd Edition و سایتهای gamedev.net و glew.sourceforge.net و

elf-stone.com/glee.php و مقداری نیز از اطلاعات شخصی خودم

 

+ نوشته شده توسط ( ساسان و محمد ) در شنبه ششم خرداد 1385 و ساعت |
Image and video hosting by TinyPic