اوپن‌جی‌ال

بازی‌های رایانه‌ای محاسبات آنی رندرینگ را به اپن‌جی‌ال محول می‌کنند، نتایج رندر بازگردانده نمی‌شود بلکه در فریم‌بافر ذخیره‌شده که اطلاعاتش به کنترل‌کننده نمایشی ارسال می‌شود.
اوپن‌جی‌ال یک رابط برنامه‌نویسی نرم‌افزار چندسکویی برای رندرینگ دوبعدی و سه‌بعدی است. این رابط برنامه‌نویسی معمولا برای تعامل با پردازشگر گرافیکی و به‌دست‌آوردن رندرینگ شتاب‌یافته توسط سخت‌افزار استفاده می‌شود.
اپن‌جی‌ال مخفف Open G raphic L ibrary (کتابخانه گرافیکی باز) است ولی اپن‌جی‌ال خود به هیچ‌وجه یک کتابخانه نرم‌افزاری نیست و نرم‌افزار متن‌باز نیز به حساب نمی‌آید (چون حاوی هیچ کدی نیست)؛ اوپن‌جی‌ال، تنها استانداردی باز برای توصیف یک رابط گرافیکی است که توسط شرکت‌های متعددی توسعه داده‌شده و می‌تواند توسط درایورهای گرافیک، سیستم‌عامل‌ها و نرم‌افزارهای مختلف پیاده‌سازی شود.
اوپن‌جی‌ال توسط شرکت سیلیکون گرافیکز از سال ۱۹۹۱ توسعه یافت و در سال ۱۹۹۲ منتشر شد و به‌صورت گسترده در طراحی به کمک رایانه، واقعیت مجازی، مصورسازی، بصری‌سازی اطلاعات، شبیه‌سازهای پرواز و بازی‌های ویدئویی به‌کار گرفته‌شد. اوپن‌جی‌ال توسط سازمان کنسرسیوم ناسودبر تکنولوژی Khronos Group مدیریت می‌شود.
طراحی
اوپن‌جی‌ال یک رابط برنامه‌نویسی نرم‌افزار انتزاعی را برای گرافیک دوبعدی و سه‌بعدی توصیف می‌کند. اگرچه که ممکن‌است این رابط به‌صورت کاملا نرم‌افزاری پیاده‌سازی شود، اوپن‌جی‌ال طراحی‌شده که به‌صورت تقریبا کامل یا کاملا در سخت‌افزاری پیاده‌سازی شود.
این رابط برنامه‌نویسی به‌عنوان تعدادی تابع که ممکن است توسط برنامه مشتری صدا زده شوند به‌علاوه تعدادی ثابت عددی (برای نمونه GL_TEXTURE_2D که متناظر با عدد ده‌دهی ۳۵۵۳ است) تعریف می‌شود. اگرچه تعریف توابع ظاهرا شبیه سی هستند ولی آن‌ها مستقل از زبان هستند.
به‌علاوه مستقل از زبان‌بودن، اوپن‌جی‌ال مستقل از سکو است. اوپن‌جی‌ال هیچ چیزی درباره گرفتن و مدیریت یک محیط OpenGL نمی‌گوید و آن را به‌عنوان جزئیات سامانه پنجره‌ای رها می‌کند. به همین دلیل، اوپن‌جی‌ال به طور خالص به رندرینگ توجه می‌کند و هیچ رابطی را درباره ورودی، صدا و پنجره فراهم نمی‌کند.
توسعه
اوپن‌جی‌ال یک رابط برنامه‌نویسی در حال تحول است. نسخه‌های جدید اوپن‌جی‌ال به طور منظم توسط Khronos Group منتشر می‌شوند که هر یک این رابط برنامه‌نویسی را برای حمایت از قابلیت جدید مختلفی گسترش می‌دهد.
به‌علاوه قابلیت‌های جدیدی که توسط هسته رابط برنامه‌نویسی مورد نیاز هستند، فروشندگان واحد پردازش گرافیکی ممکن است قابلیت‌های جدید را به شکل extensions (افزونه) ارائه دهند. افزونه‌ها ممکن است ویژگی‌ها یا ثابت‌های جدیدی معرفی کنند یا ممکن است محدودیت‌هایی توابع فعلی اوپن‌جی‌ال را کاهش یا حذف کنند. فروشندگان می‌توانند از افزونه‌ها برای در معرض گذاشتن رابط‌های برنامه‌نویسی سفارشی بدون نیاز به حمایت از طرف سایر فروشندگان استفاده کنند که به‌مقدار زیادی انعطاف‌پذیری اوپن‌جی‌ال را افزایش می‌دهد. همه افزونه‌ها توسط جمع‌آوری و تعریف می‌شوند.
هر افزونه با توجه به شرکتی که آن را توسعه داده با نامی کوتاه پیوند خورده است. برای نمونه شناسه انویدیا NV است که قسمتی از نام افزونه GL_NV_half_float ، ثابت GL_HALF_FLOAT_NV و تابع glVertex2hNV() است. اگر چند فروشنده بر سر قابلیتی مشابه با رابط برنامه‌نویسی به‌توافق برسند این افزونه مشترک ممکن است با شناسه EXT منتشر گردد. در این موارد ممکن است برد بازبینی معماری Khronos Group تایید صریح خود را نیز بدهند و شناسه ARB استفاده می‌شود.
ویژگی‌های جدید معرفی‌شده توسط هر نسخه معمولا با ترکیب قابلیت‌های افزونه‌های گسترده پیاده‌سازی‌شده به خصوص افزونه‌های از نوع ARB و EXT هستند.
کتابخانه‌های وابسته
نسخه‌های اولیه اوپن‌جی‌ال با کتابخانه همراهی که GLU، کتابخانه ابزار اوپن‌جی‌ال خوانده می‌شد عرضه می‌شد. جی‌ال‌یو قابلیت‌های ساده و مفیدی از قبیل Mipmapسازی و موزاییک‌کاری که بعید به‌نظر می‌رسید در سخت‌افزارهای آن زمان حمایت شوند را فراهم می‌کرد. مشخصات GLU آخرین بار در ۱۹۹۸ به‌روز شد و نسخه‌های اخیر به قابلیت‌هایی که استفاده از آن توسط اپن‌جی‌ال ۳٫۱ با انتشار اپن‌جی‌ال در سال ۲۰۰۹ منسوخ اعلام‌شده وابسته است.
با در نظرگرفتن اینکه ایجاد زمینه فرایند پیچیده‌ای است و همچنین بین سیستم‌عامل‌های مختلف متفاوت است، ایجاد خودکار زمینه اوپن‌جی‌ال ویژگی مشترکی بین کتابخانه‌های توسعه بازی و رابط کاربری است از جمله اس‌دی‌ال، Allegro, SFML, FLTK و کیوت.
چند کتابخانه فقط به‌منطور پنجره با توانایی اپن‌جی‌ال ایجاد شده‌است. اولین نمونه چنین کتابخانه‌هایی جی‌ال‌یوتی (که بعدا توسط فری‌جی‌ال‌یوتی جایگزین شد) بود. جی‌ال‌اف‌دبلیو نیز جایگزین جدیدتری است.