اوپن‌جی‌ال (به انگلیسی: OpenGL) یک رابط برنامه‌نویسی نرم‌افزار چندزبانه و چندسکویی برای برای ارائه گرافیک برداری دو بعدی و سه بعدی است. این رابط برنامه‌نویسی معمولاً برای تعامل با پردازشگر گرافیکی و به‌دست‌آوردن پردازش شتاب‌ یافته‌ی سخت‌افزاری است.[۲]

OpenGL
نویسنده(های)
اصلی
سیلیکون گرافیکس
توسعه‌دهنده(ها)گروه کرونوس
انتشار اولیهژانویه ۱۹۹۲ (۱۹۹۲-۰۱)
انتشار پایدار
۴٫۴ / ۲۲ ژوئیه ۲۰۱۳ (۲۰۱۳-۰۷-۲۲)
نوشته‌شده باC
سیستم‌عاملچندسکویی
پلت‌فرمچندسکویی
نوعرابط برنامه‌نویسی نرم‌افزار
مجوزمختلف[۱]
وبگاه
بازی‌های رایانه‌ای محاسبات آنی رندرینگ را به اپن‌جی‌ال محول می‌کنند، نتایج رندر بازگردانده نمی‌شود بلکه در فریم‌بافر ذخیره‌شده که اطلاعاتش به کنترل‌کنندهٔ نمایشی ارسال می‌شود.

اپن‌جی‌ال مخفف Open Graphic Library (کتابخانهٔ گرافیکی باز) است ولی اپن‌جی‌ال خود به هیچ‌وجه یک کتابخانهٔ نرم‌افزاری نیست و نرم‌افزار متن‌باز نیز به حساب نمی‌آید (چون حاوی هیچ کدی نیست)؛ اوپن‌جی‌ال، تنها استانداردی باز برای توصیف یک رابط گرافیکی است که توسط شرکت‌های متعددی توسعه داده‌شده و می‌تواند توسط درایورهای گرافیک، سیستم‌عامل‌ها و نرم‌افزارهای مختلف پیاده‌سازی شود.[۳]

اوپن‌جی‌ال توسط شرکت سیلیکون گرافیکس از سال ۱۹۹۱ توسعه یافت و در سال ۱۹۹۲ منتشر شد و به‌صورت گسترده در زمینه‌های طراحی به کمک رایانه، واقعیت مجازی، مصورسازی، بصری‌سازی اطلاعات، شبیه‌سازهای پرواز و بازی‌های ویدئویی به‌کار گرفته‌شد. اوپن‌جی‌ال توسط کنسرسیوم ناسودبر فناوری گروه کرونوس مدیریت می‌شود.[۲]

گروه کرونوس آخرین نسخه‌ی اوپن جی ال را در سال ۲۰۱۷ به مناسبت ۲۵ سالگی اوپن جی ال منتشر کرد[۴] و در حال حاضر ولکان به عنوان نسل جدید اوپن جی ال در حال توسعه میباشد.

طراحی

ویرایش

اوپن‌جی‌ال یک رابط برنامه‌نویسی نرم‌افزار انتزاعی را برای گرافیک دوبعدی و سه‌بعدی توصیف می‌کند. اگرچه که ممکن‌است این رابط به‌صورت کاملاً نرم‌افزاری پیاده‌سازی شود، ولی اوپن‌جی‌ال طراحی‌شده تا تقریباً کامل و یا کاملاً به شیوه‌ی سخت‌افزاری پیاده‌سازی شود.[۲]

 
تصویری از روند مرحله‌ای گرافیکی

این رابط برنامه‌نویسی به‌عنوان مجموعه‌ای از تابع‌ها که ممکن است توسط برنامه‌ی سرویس‌گیرنده صدا زده شوند، درکنار شماری ثابت عددی (برای نمونه ثابت GL_TEXTURE_2D که متناظر با عدد ده‌دهی ۳۵۵۳ است) تعریف می‌شود. اگرچه تعریف توابع شبیه زبان برنامه نویسی سی به نظر می‌رسند ولی مستقل از زبان هستند.[۲]

افزون‌بر مستقل‌بودن از زبان‌، اوپن‌جی‌ال مستقل از سکو است. اوپن‌جی‌ال هیچ چیزی دربارهٔ گرفتن و مدیریت یک محیط اوپن‌جی‌ال نمی‌گوید و آن را به‌عنوان جزئیات سیستم پنجره‌بندی رها می‌کند. به همین دلیل، اوپن‌جی‌ال به‌طور خالص به پردازش تصویری توجه می‌کند و هیچ رابطی را دربارهٔ ورودی، صدا و پنجره فراهم نمی‌کند.[۲]

توسعه

ویرایش

اوپن‌جی‌ال یک رابط برنامه‌نویسی در حال توسعه است. نسخه‌های جدید اوپن‌جی‌ال به‌طور منظم توسط گروه کرونوس منتشر می‌شوند که هر یک آن را برای پشتیبانی از ویژگی‌های جدید مختلفی گسترش می‌دهد.[۲] جزئیات هر نسخه با اجماع بین اعضای این گروه از جمله سازندگان کارت گرافیک ، طراحان سیستم عامل و شرکت های فناوری عمومی مانند موزیلا و گوگل تعیین می شود. [۵]

افزون‌بر ویژگی‌های جدیدی که توسط هستهٔ رابط برنامه‌نویسی مورد نیاز هستند، فروشندگان واحد پردازش گرافیکی ممکن است قابلیت‌های جدید را به شکل افزونه ارائه دهند. افزونه‌ها ممکن است ویژگی‌ها یا ثابت‌های جدیدی معرفی کنند یا ممکن است محدودیت‌هایی توابع فعلی اوپن‌جی‌ال را کاهش یا پاک کنند. فروشندگان می‌توانند بدون نیاز به پشتیبانی دیگر فروشندگان از افزونه‌ها برای نمایش رابط‌های سفارشی خود بهره ببرند که به‌مقدار زیادی انعطاف‌پذیری اوپن‌جی‌ال را افزایش می‌دهد. همهٔ افزونه‌ها توسط فهرست اوپن‌جی‌ال جمع‌آوری و تعریف می‌شوند.[۲]

هر افزونه با توجه به شرکتی که آن را توسعه داده با نامی کوتاه پیوند خورده است. برای نمونه شناسهٔ انویدیا NV است که قسمتی از نام افزونه GL_NV_half_float، ثابت GL_HALF_FLOAT_NV و تابع glVertex2hNV() است. اگر چند فروشنده بر سر قابلیتی مشابه با رابط برنامه‌نویسی به‌توافق برسند این افزونهٔ مشترک ممکن است با شناسهٔ EXT منتشر گردد. در این موارد ممکن است هیئت بررسی معماری گروه کرونوس تأیید روشن خود را به افزونه بدهد در این صورت از شناسهٔ ARB استفاده می‌شود.[۲]

ویژگی‌های جدید معرفی‌شده توسط هر نسخه معمولاً با ترکیب قابلیت‌های افزونه‌های گسترده پیاده‌سازی‌شدهٔ به خصوص افزونه‌های از نوع ARB و EXT هستند.[۲]

کتابخانه‌های وابسته

ویرایش

نسخه‌های اولیه اوپن‌جی‌ال با کتابخانهٔ همراهی که GLU، کتابخانهٔ ابزار اوپن‌جی‌ال خوانده می‌شد عرضه می‌شد. جی‌ال‌یو قابلیت‌های ساده و مفیدی از قبیل Mipmap سازی و موزاییک‌کاری که بعید به‌نظر می‌رسید در سخت‌افزارهای آن زمان حمایت شوند را فراهم می‌کرد. مشخصات GLU آخرین بار در ۱۹۹۸ به‌روز شد و نسخه‌های اخیر به قابلیت‌هایی که استفاده از آن توسط اپن‌جی‌ال ۳٫۱ با انتشار اپن‌جی‌ال در سال ۲۰۰۹ منسوخ اعلام‌شده وابسته است.[۲]

با در نظرگرفتن اینکه ایجاد زمینه (به انگلیسی: Context) فرایند پیچیده‌ای است و همچنین بین سیستم‌عامل‌های مختلف متفاوت است، ایجاد خودکار زمینهٔ اوپن‌جی‌ال ویژگی مشترکی بین کتابخانه‌های توسعهٔ بازی و رابط کاربری است از جمله اس‌دی‌ال، Allegro, SFML, FLTK و کیوت.[۲]

چند کتابخانه فقط به‌منطور پنجره با توانایی اپن‌جی‌ال ایجاد شده‌است. اولین نمونهٔ چنین کتابخانه‌هایی جی‌ال‌یوتی (به انگلیسی: GLUT) (که بعداً توسط فری‌جی‌ال‌یوتی (به انگلیسی: freeglut) جایگزین شد) بود. جی‌ال‌اف‌دبلیو (به انگلیسی: GLFW) نیز جایگزین جدیدتری است.[۶]

والکان

ویرایش

(به انگلیسی: Vulkan) ، که پیش‌از‌این "ابتکار نسل بعدی OpenGL" نامیده می‌شد (glNext) [۷] [۸] یک تلاش مجدد برای ایجاد یکپارچگی OpenGL و OpenGL ES در یک رابط برنامه نویسی مشترک است که با نسخه های OpenGL موجود سازگار نخواهد بود. [۹] [۱۰] [۱۱]

نگارخانه

ویرایش

منابع

ویرایش
  1. "Products: Software: OpenGL: Licensing and Logos". SGI. Archived from the original on 1 November 2012. Retrieved November 7, 2012.
  2. ۲٫۰۰ ۲٫۰۱ ۲٫۰۲ ۲٫۰۳ ۲٫۰۴ ۲٫۰۵ ۲٫۰۶ ۲٫۰۷ ۲٫۰۸ ۲٫۰۹ ۲٫۱۰ Wikipedia contributors, "OpenGL," Wikipedia, The Free Encyclopedia, http://en.wiki.x.io/w/index.php?title=OpenGL&oldid=607039069 (accessed May 23, 2014).
  3. «پاسخ پرسش‌های متداول». بایگانی‌شده از اصلی در ۲۰ مه ۲۰۱۴. دریافت‌شده در ۲۴ مه ۲۰۱۴.
  4. "Khronos Releases OpenGL 4.6 with SPIR-V Support". The Khronos Group (به انگلیسی). 2017-07-31. Retrieved 2020-02-21.
  5. "Khronos Membership Overview and FAQ". Khronos.org. Retrieved November 7, 2012.
  6. "A list of GLUT alternatives, maintained by". Opengl.org. Retrieved 2013-05-02.
  7. Dingman, Hayden (March 3, 2015). "Meet Vulkan, the powerful, platform-agnostic gaming tech taking aim at DirectX 12". PC World. Retrieved March 3, 2015.
  8. Bright, Peter (March 3, 2015). "Khronos unveils Vulkan: OpenGL built for modern systems". Ars Technica. Retrieved March 3, 2015.
  9. "Khronos Announces Next Generation OpenGL Initiative". AnandTech. Retrieved August 20, 2014.
  10. "OpenGL 4.5 released, next-gen OpenGL unveiled: Cross-platform Mantle killer, DX12 competitor". Retrieved August 20, 2014.
  11. "Khronos Publishes Its Slides About OpenGL-Next". Phoronix. Retrieved August 22, 2014.