اپنجیال مخفف OpenGraphic 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 موجود سازگار نخواهد بود. [۹][۱۰][۱۱]
نگارخانه
بازتاب ایجادشده توسط سایهزنهای ورتکس
بافت پویانماییشده با استفاده از اشیاء فریمبافر و برنامههای افزونهٔ سایهزنهای ورتکس/فرگمنت