گرافیک کامپیوتری همواره از جمله جذابترین جنبه های کامپیوترها بوده است. بازیها، برنامه های طراحی گرافیکی دو بعدی و سه بعدی و شبیه سازیها همگی به نوعی از قابلیتهای گرافیکی یک کامپیوتر بهره میبرند. مهمترین نکته در این زمینه، برقراری تعادلی منطقی بین کیفیت تصاویر نمایش داده شده بر روی صحنه و سرعت اجرای برنامه میباشد. یکی از راه هایی که در دو دهه اخیر همواره برای افزایش سرعت مورد استفاده قرار گرفته است، حذف موانع غیرضروری بوده است. در این راه، سعی شده است تا ارتباط برنامه نویس به ساده ترین صورت با سخت افزار گرافیکی برقرار شود.
تقریبا همزمان با عرضه اولین نسخه های ویندوز، محصولاتی نظیر Glide و WinG هم به بازار آمدند که کم و بیش از حمایت مایکروسافت هم برخوردار بودند. ولیکن به جرات می توان گفت شرکت Silicon Graphics اولین محصول استاندارد و همه منظوره را برای پیاده سازی گرافیک در سیستمهای ویندوز ارائه نمود. محصول این شرکت که OpenGL نام دارد، در طی حدود یک دهه، علی رغم ضعفهای فراوان توانسته است به حیات خود ادامه دهد. (بد نیست بدانید که OpenGL از روی بسته نرم افزاری بنام Iris GL ساخته شد. این کتابخانه در دهه 80 در سیستمهای UNIX کاربرد فراوانی داشت.) شاید این مسئله بیش از هر چیز دیگری به سادگی OpenGL مربوط شود.
این سادگی به حدی است که میتوان گفت OpenGL کتابخانه استاندارد صنعتی گرافیک میباشد .امروزه با عرضه نسخه های جدید DirectX، شاید حداقل در صنعت ساخت بازی کمتر به OpenGL توجه شود ولی این کتابخانه هنوز هم علاقمندان خاص خود را دارا میباشد و اکثر نرم افزارهای کاربردی طراحی همچون برنامه های CAD/CAM، انیمیشن یا ویرایش تصویر بطور پیش فرض از آن بهره میبرند. در این مقاله سعی خواهیم کرد با هم نگاهی هر چند گذرا به ویژگیها و نقاط ضعف این مجموعه بیاندازیم.
اگر بخواهیم از دید مهندسی نرم افزار به OpenGL نگاه کنیم، شاید سه خصوصیت بارز برای آن بیابیم. OpenGL به شیوه ای طراحی شده است که دستورات در یک محل صادر شده و در محل دیگر اجرا شوند، به همین سادگی. به این معماری، ساختار مشتری/خدمات دهنده (client/server) گفته میشود. بدین شیوه OpenGL میتواند حتی بر روی شبکه های کامپیوتری هم بخوبی کار کند .
خصوصیت دیگر استفاده از یک محل مجتمع برای نمایش تصاویر میباشد. این محل که میتواند در هر جایی از حافظه قرار بگیرد (از جمله حافظه گرافیکی) بافر فریم (frame buffer) نامیده میشود. مورد آخر اینکه OpenGL معمولا خیلی در مورد محدوده پارامترها وسواس به خرج میدهد و اجازهنمیدهد مقادیر خارج از حوزه ارسال شوند. این عمل که parameter validation نام دارد گاهی اوقات باعث پایین آمدن سرعت رندر میگردد.
شاید خصوصیت اول یکی از مهمترین دلایلی باشد که خیلی ها OpenGL را کتابخانه ای خوب (یا بهتر بگوییم آسان) توصیف میکنند. وقتی این حالت را با DirectX مقایسه میکنیم، میبینیم که حضور تکنولوژی COM، اغلب باعث پیچیدگی کار برنامه نویسی با آن میشود. پس شاید بتوان گفت OpenGL از این لحاظ برتری دارد؛ زیرا بصورت یک سری فایلهای سرباره و کتابخانه ای ارائه میشود، حالتی که برنامه نویسها سالهاست با آن آشنا هستند.
از جمله ویژگیهای مهم OpenGL، که باعث جذب طرفداران زیادی برای آن شده است، قابلیت اجرای آن در انواع سیستم عاملها میباشد. یعنی این کتابخانه، برخلاف بسیاری از رقبای خودش تنها به سیستم ویندوز محدود نمیباشد و به گفته خیلی از کاربرانش، هر جا که یک کامپیوتر وجود داشته باشد میتوان از OpenGL هم استفاده کرد.
درست است که OpenGL ابتدا توسط شرکت SGI ارائه شد ولی در حال حاضر تقریبا متولی مشخصی ندارد و هر کسی میتواند یک نسخه اختصاصی از OpenGL را نوشته و بر روی اینترنت قرار دهد تا دیگران هم از آن بهره ببرند؛ کاری که الان شرکتهای بزرگی همچون مایکروسافت و اپل انجام داده اند و نسخه اختصاصی از این کتابخانه را برای سیستم عاملهای خود عرضه کرده اند .در واقع OpenGL، وصله های زیادی دارد (این وصله ها extension نامیده میشوند). الان مدتهاست که گفته میشود قرار است نسخه 0,2 OpenGL به بازار بیاید، ولی هنوز چنین چیزی در دنیای واقعی وجود ندارد.
در ضمن OpenGL یک نوع ماشین حالت(state machine) به شمار می آید. یعنی اکثر خصوصیات و قابلیتهای آن بصورت یک تابع حالت عرضه میشوند. بدین ترتیب که اگر مثلا خصوصیت نورپردازی آن را فعال نمایید، تا زمانی که بار دیگر این خصوصیت را غیر فعال نکرده باشید صحنه شما تحت نورپردازی قرار میگیرد.
اگر شما از آن دسته افرادی هستید که از اینترنت برای یافتن پاسخ سوالهای برنامه نویسی خود استفاده میکنید، با خیال راحت به سراغ OpenGL بروید. چون منابع زیادی در این زمینه وجود دارد و میتوانید مطمئن باشید که هیچ یک از سوالهای شما بی پاسخ نخواهد ماند. OpenGL بر خلاف اکثر کتابخانه های مشابه دارای مستندات کاملا استانداردی میباشد. شرکت SGI سالهاست کتابی تحت عنوان OpenGL Red Book را عرضه کرده است که به توضیح و تشریح OpenGL اختصاص داده شده است. همچنین کتاب OpenGL Blue Book هم بعنوان مرجع دستورات این کتابخانهمیباشد. نکته دیگر اینکه OpenGL یک کتابخانه شیء گرا نمیباشد و همانطور که گفتیم بعنوان یک سیستم مشتری/خدمات دهنده همه امور خود را با یک سری تابع انجام میدهد. این مسئله میتواند در مورد برنامه های بزرگ مشکل آفرین باشد. (البته خود OpenGL بصورت مرحله ای طراحی شده است، ولی میتوان
به گونه ای برنامه را طراحی کرد که از تکنولوژی شیء گرا استفاده کند؛ هر چند این کار خیلی راحت نمیباشد(
شامل 8 صفحه Word
دانلود مقاله OpenGL را بهتر بشناسیم