OpenGL — (англ. Open Graphics Library — відкрита графічна бібліотека) — специфікація, що визначає незалежний від мови програмування крос-платформовий програмний інтерфейс (API) для написання застосунків, що використовують 2D та 3D комп'ютерну графіку. Цей інтерфейс містить понад 250 функцій, які можуть використовуватися для малювання складних тривимірних сцен з простих . Широко застосовується індустрією комп'ютерних ігор і віртуальної реальності, у графічних інтерфейсах (Compiz, Clutter), при візуалізації наукових даних, в системах автоматизованого проектування тощо.
Тип | Графічне 3D API |
---|---|
Автор | Silicon Graphics |
Розробники | Khronos Group |
Перший випуск | 30 червня 1992 |
Стабільний випуск | 4.6 (31 липня 2017 ) |
Операційна система | крос-платформовий |
Мова програмування | C і GLSL |
Стан розробки | не підтримується, заміщений Vulkan |
Ліцензія | різні |
Вебсайт | www.opengl.org |
|
Історія
Стандарт OpenGL був розроблений і затверджений у 1992 році передовими компаніями в області розробки апаратного та програмного забезпечення для роботи з комп'ютерною графікою. Метою співпраці було створення апаратно-незалежного інтерфейсу придатного для реалізації на різних платформах. Основою стандарту стала бібліотека , розроблена компанією Silicon Graphics.
У 1994 році SGI пограла з ідеєю випустити щось під назвою «OpenGL++», що включало такі елементи, як API графів сцени (ймовірно, на основі їхньої технології Performer). Специфікація була поширена серед кількох зацікавлених сторін, але так і не перетворилася на продукт.
(Kurt Akeley) і (Mark Segal) створили оригінальну специфікацію OpenGL. (Chris Frazier) редагував версію 1.1, а Джон Ліч (Jon Leech) версії з 1.2 по 2.0.
31 липня 2006 року на SIGGRAPH було анонсовано, що контроль за специфікацією OpenGL буде переданий Khronos Group. У серпні 2008 Khronos Group опублікував специфікацію OpenGL 3.0.
Специфікація
На базовому рівні, OpenGL — це всього лише специфікація, тобто, — просто документ, який описує набір функцій та їх точну поведінку. На основі цих специфікацій виробники апаратного забезпечення створюють реалізації — бібліотеки функцій, які відповідають заявленій в OpenGL специфікації. Ці реалізації проектуються для того, щоб при можливості використовувати можливості апаратного забезпечення. Коли апаратне прискорення не допускається, виконання функцій здійснюється за допомогою програмного забезпечення. Виробники повинні пройти спеціальні тести на відповідність, перш, ніж їхню реалізацію класифікуватимуть, як реалізацію OpenGL. Таким чином, розробникам програмного забезпечення необхідно всього лиш навчитися використовувати описані у специфікації функції, і лишити їхню реалізацію за розробниками апаратного забезпечення.
Ефективні реалізації OpenGL існують для операційних систем Linux, MacOS, Microsoft Windows та багатьох UNIX-подібних ОС, а також для таких ігрових боксів, як Sony PlayStation 3. Різні програмні реалізації OpenGL існують для платформ, виробники яких не підтримують дану специфікацію. Відкрита (open source) бібліотека Mesa — повністю OpenGL сумісний програмний API. Однак, для того, щоб уникнути витрат на ліцензування, пов'язаних з формалізацією, яка вимагається для офіційного визнання реалізації, Mesa є неофіційною реалізацією специфікації, хоча й повністю з нею сумісна.
Архітектура
OpenGL орієнтується на такі два завдання:
- Сховати складності адаптації різних 3D-прискорювачів, надаючи розробнику єдиний API.
- Приховати відмінності в можливостях апаратних платформ, вимагаючи реалізації відсутньої функціональності за допомогою програмної емуляції.
Основним принципом роботи OpenGL є отримання наборів векторних графічних примітивів у вигляді точок, ліній та багатокутників з наступною математичною обробкою отриманих даних та побудовою растрової картинки на екрані і/або в пам'яті. Векторні трансформації та растеризація виконуються графічним конвеєром (graphics pipeline), який власне являє собою дискретний автомат. Абсолютна більшість команд OpenGL потрапляють в одну з двох груп: або вони додають графічні примітиви на вхід в конвеєр, або конфігурують конвеєр на різне виконання трансформацій.
OpenGL є низькорівневим процедурним API, що змушує програміста диктувати точну послідовність кроків, щоб побудувати результуючу растрову графіку (імперативний підхід). Це є основною відмінністю від дескрипторних підходів, коли вся сцена передається у вигляді структури даних (найчастіше дерева), яке обробляється і будується на екрані. З одного боку, імперативний підхід вимагає від програміста глибокого знання законів тривимірної графіки та математичних моделей, з іншого боку — дає свободу впровадження різних інновацій.
Розширення
Розвиток нових технологій вимагає розширення функціональності OpenGL. Виробники GPU можуть додавати до бібліотеки нові функції через механізм розширень. Розширення розповсюджуються за допомогою двох складових: заголовкового файлу, в якому знаходяться прототипи (описи) нових функцій і констант, а також драйвера пристрою.
Кожен виробник має абревіатуру, яка використовується при іменуванні його нових функцій і констант. Для прикладу, компанія NVIDIA має абревіатуру NV, яка використовується в змінній GL_NV_half_float
, константі GL_HALF_FLOAT_NV
та функції glVertex2hNV()
. Може трапитися так, що певне розширення можуть реалізовувати декілька виробників. У цьому випадку, використовується абревіатура EXT, наприклад, glDeleteRenderbuffersEXT
. У разі ж, коли розширення схвалюється консорціумом ARB, воно набуває абревіатури ARB і стає стандартним. Зазвичай, розширення, схвалені консорціумом ARB включаються до однієї з наступних специфікацій OpenGL.
Список специфікацій розширень можна знайти тут [ 8 січня 2017 у Wayback Machine.].
Додаткові
Існує ряд бібліотек, створених поверх або на додаток до OpenGL. Наприклад, бібліотека GLU, що є практично стандартним доповненням OpenGL і завжди її супроводжує, побудована поверх останньої, тобто використовує її функції для реалізації своїх можливостей. Інші бібліотеки, як, наприклад, GLUT і SDL, створені для реалізації можливостей, недоступних в OpenGL. До таких можливостей належать створення інтерфейсу користувача (вікна, кнопки, меню та ін.), настройка контексту малювання (область малювання, яку використовує OpenGL), обробка повідомлень від пристроїв введення/виведення (клавіатура, миша та ін.), а також робота з файлами. Зазвичай, кожний віконний менеджер має власну бібліотеку-розширення для реалізації вищеописаних можливостей, наприклад, WGL в Windows або GLX в X Window System, однак бібліотеки GLUT і SDL є крос-платформеними, що полегшує перенесення написаних додатків на інші платформи. Бібліотеки GLEW (The OpenGL Extension Wrangler Library) і GLEE (The OpenGL Easy Extension library) створені для полегшення роботи з розширеннями та різними версіями OpenGL. Це особливо актуально для програмістів в Windows, оскільки заголовні та бібліотечні файли, що поставляються з Visual Studio, знаходяться на рівні версії OpenGL 1.1. OpenGL має лише набір геометричних примітивів (точки, лінії, багатокутники) з яких створюються всі тривимірні об'єкти. Часом подібний рівень деталізації не завжди зручний при створенні сцен. Тому поверх OpenGL були створені вищорівневі бібліотеки, такі як Open Inventor і VTK. Дані бібліотеки дозволяють оперувати більш складними тривимірними об'єктами, що полегшує та прискорює створення тривимірної сцени. GLM (OpenGL Mathematics) — Допоміжна бібліотека, що надає програмістам на C++ класи та функції для виконання математичних операцій. Бібліотека може використовуватися при створенні 3D-програм з використанням OpenGL.[2] Однією з характеристик GLM є те, що реалізація заснована на специфікації GLSL. Вихідний код GLM використовує ліцензію MIT.
Незалежність від мови програмування
Для підтвердження незалежності від мови програмування були розроблені різні варіанти прив'язки (binding) функцій OpenGL або повністю перенесені на інші мови. Одним із прикладів може служити бібліотека Java 3D, яка може використовувати апаратне прискорення OpenGL. Пряма прив'язка функцій реалізована в Lightweight Java Game Library[3], Яка має пряму прив'язку OpenGL для Java. Sun також випустила версію Java OpenGL (JOGL), яка надає пряму прив'язку до Сі-функцій OpenGL, на відміну від Java 3D, яка не має настільки низькорівневої підтримки. Офіційний сайт OpenGL має посилання на прив'язки для мов Java, Фортран 90, Perl, Pike, Python, Ada, Visual Basic і Pascal.[4] Є також варіанти прив'язки OpenGL для мов C++ і C#.[5]
OpenGL 2.0
У порівнянні із DirectX стверджувалось, що основною проблемою OpenGL є Консорціум, в який входить велика кількість компаній із різними інтересами, що призводить до довгого періоду прийняття нової версії специфікації. OpenGL версії 2.0 був представлений 3Dlabs у відповідь на хвилювання відносно повільного розвитку і нечіткого направлення OpenGL. Компанія 3Dlabs запропонувала ряд суттєвих доповнень до стандарту, найбільш значимим із яких було додавання до ядра OpenGL шейдерної мови програмування GLSL (OpenGL Shading Language). Це дозволило програмістам замінити фіксований конвеєр OpenGL невеликими шейдерними програмами на спеціальній шейдерній мові для створення різних візуальних ефектів, таких як bump mapping, normal mapping, paralax mapping, HDR і т.д.
Ще до введення в стандарт OpenGL мови GLSL існувала можливість розробляти спецефекти на асемблерних мовах (розширення vertex_program, fragment_program) специфічних для виробника (ATI, Nvidia) і на шейдерній мові (NVidia C for Graphics) від компанії NVidia.
OpenGL 3.0
Специфікація OpenGL 3.0 додає великий обсяг нової функціональності. OpenGL 3.0 включає нову версію мови програмування шейдерів GLSL 1.30, а також забезпечує всебічну підтримку сучасних програмованих графічних рішень. Крім того, робоча група визначила набір розширень OpenGL 3.0, які дозволять додати нову функціональність в наступну версію OpenGL. Серед основних особливостей OpenGL 3.0 — масиви текстур, 32-бітовий буфер глибини з рухомою комою, нові режими стиснення текстур і інше.
У розробці специфікації OpenGL 3.0 брали активну участь фахівці компаній AMD, Intel і nVidia. За оцінками аналітиків компанії Jon Peddie Research, встановлена база графічного устаткування з підтримкою OpenGL 3.0 перевищує 60 мільйонів пристроїв.
OpenGL 4.0
11 березня 2010 року Khronos Group представила фінальний варіант специфікації OpenGL 4.0 і мови опису шейдерів GLSL 4.0. OpenGL 4.0 повністю сумісний назад із старими розширеннями OpenGL, використовуючи режим сумісності введений в OpenGL 3.2.
Нововведення
- Два нові ступені обробки шейдерів, що дозволяє перенести обробку теселяції з центрального процесора на GPU;
- Підтримка вибіркових фрагментних шейдерів (per-sample fragment shaders) і програмованих фрагментних шейдерів вхідних позицій для збільшення якості рендерінга і гнучкості в управлінні згладжуванням;
- Промальовування даних, що згенеровані OpenGL або такими зовнішніми API, як OpenCL, без участі центрального процесора;
- Шейдерні підпрограми допоможуть значно збільшити гнучкість написання програм;
- Розділення стану текстур і текстурованих даних через додавання нового типу даних під назвою «об'єкти семплів»;
- 64-бітова подвійна точність з рухомою комою операцій з шейдерами і введенням-виведення для збільшення точності і якості рендерінга;
- Збільшення продуктивності, включаючи шейдери геометрії зразка, масивів зразка і нових запитів до таймера.
Проект
OpenGL обслуговує дві цілі:
- Для того, щоб приховувати складнощі встановлення зв'язку комп'ютера з різними 3D відеоприскорювачами, надати програмістові один, загальноприйнятий API
- Для того, щоб приховати можливості базових інструментальних машин, які відрізняються своїм намаганням виконати підтримку повного набору особливостей OpenGL (використання програмної емуляції, якщо необхідно).
Приклад
//Для початку очистимо буфер, в якому зберігається колір, щоб розпочати роботу з чистого полотна: glClear( GL_COLOR_BUFFER_BIT ); //Тепер встановимо modelview матрицю, яка управляє позицією камери щодо примітивів. Переміщуємо її на 3 позиції уздовж осі z: glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glTranslatef( 0, 0, -3 ); //Матриця проекту управляє перспективним ефектом, прикладеним до примітивів, і управляється подібно до modelview матриці: glMatrixMode( GL_PROJECTION ); glLoadIdentity(); glFrustum( -1, 1, -1, 1, 1, 1000 ); //Нарешті, ми випускаємо багатокутник - зелений, рівно орієнтований на XY осі: glBegin( GL_POLYGON ); glColor3f( 0, 1, 0 ); glVertex3f( -1, -1, 0 ); glVertex3f( -1, 1, 0 ); glVertex3f( 1, 1, 0 ); glVertex3f( 1, -1, 0 ); glEnd();
Документація
Значною мірою популярність OpenGL пов'язана з наявністю великої кількості якісної документації.
випустила ряд посібників разом із специфікацією, яку було оновлено для відображення змін в API. Це майже універсальні посібники, відомі, як кольорові:
- The Red Book — Посібник з OpenGL для програмістів.
- Чіткий довідник та посібник — необхідна річ для OpenGL програмістів.
- The Blue Book — Довідник з OpenGL.
- По суті, жорсткий збірник (man)
- The Green Book — Програмування OpenGL для X Window System.
- Підручник по інтерфейсу X11 та GLUT.
- The Alpha Book (Не формально, The White Book) — Програмування OpenGL для Windows 95 та Windows NT.
- Підручник з інтерфейсу OpenGL в Microsoft Windows.
Підручники з OpenGL 2.0 та пізніших версій:
- The Orange Book — Посібник з OpenGL Shading Language.
- Чіткий довідник та посібник по GLSL.
Виноски
- OpenGL ARB Meeting Notes - March 9-10, 1998. www.opengl.org. Процитовано 27 липня 2022.
- Khronos Press Release: OpenGL ARB to Pass Control of OpenGL Specification to Khronos Group [ 3 травня 2008 у Wayback Machine.]
- . Архів оригіналу за 13 серпня 2008. Процитовано 12 серпня 2008.
- . Архів оригіналу за 6 січня 2014. Процитовано 8 січня 2014.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - How to Create Khronos API Extensions. Opengl.org. 13 серпня 2006. Архів оригіналу за 15 квітня 2013. Процитовано 7 листопада 2012.
- Khronos Unleashes Cutting-Edge, Cross-Platform Graphics Acceleration with OpenGL 4.0. Khronos Press Releases. 11 березня 2010. Архів оригіналу за 25 серпня 2011. Процитовано 11 березня 2010.
- Обзор новшеств OpenGL 4.0 на OpenNet. Архів оригіналу за 24 червня 2013. Процитовано 12 березня 2010.
Дивись також
Ресурси тенет
- Офіційний сайт
- Специфікація [ 14 серпня 2008 у Wayback Machine.]
- Що таке OpenGL[недоступне посилання з червня 2019]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
OpenGL angl Open Graphics Library vidkrita grafichna biblioteka specifikaciya sho viznachaye nezalezhnij vid movi programuvannya kros platformovij programnij interfejs API dlya napisannya zastosunkiv sho vikoristovuyut 2D ta 3D komp yuternu grafiku Cej interfejs mistit ponad 250 funkcij yaki mozhut vikoristovuvatisya dlya malyuvannya skladnih trivimirnih scen z prostih Shiroko zastosovuyetsya industriyeyu komp yuternih igor i virtualnoyi realnosti u grafichnih interfejsah Compiz Clutter pri vizualizaciyi naukovih danih v sistemah avtomatizovanogo proektuvannya tosho OpenGLTip Grafichne 3D APIAvtor Silicon GraphicsRozrobniki Khronos GroupPershij vipusk 30 chervnya 1992 31 rik tomu 1992 06 30 Stabilnij vipusk 4 6 31 lipnya 2017 6 rokiv tomu 2017 07 31 Operacijna sistema kros platformovijMova programuvannya C i GLSLStan rozrobki ne pidtrimuyetsya zamishenij VulkanLicenziya rizniVebsajt www opengl org Mediafajli u VikishovishiIstoriyaStandart OpenGL buv rozroblenij i zatverdzhenij u 1992 roci peredovimi kompaniyami v oblasti rozrobki aparatnogo ta programnogo zabezpechennya dlya roboti z komp yuternoyu grafikoyu Metoyu spivpraci bulo stvorennya aparatno nezalezhnogo interfejsu pridatnogo dlya realizaciyi na riznih platformah Osnovoyu standartu stala biblioteka rozroblena kompaniyeyu Silicon Graphics U 1994 roci SGI pograla z ideyeyu vipustiti shos pid nazvoyu OpenGL sho vklyuchalo taki elementi yak API grafiv sceni jmovirno na osnovi yihnoyi tehnologiyi Performer Specifikaciya bula poshirena sered kilkoh zacikavlenih storin ale tak i ne peretvorilasya na produkt Kurt Akeley i Mark Segal stvorili originalnu specifikaciyu OpenGL Chris Frazier redaguvav versiyu 1 1 a Dzhon Lich Jon Leech versiyi z 1 2 po 2 0 31 lipnya 2006 roku na SIGGRAPH bulo anonsovano sho kontrol za specifikaciyeyu OpenGL bude peredanij Khronos Group U serpni 2008 Khronos Group opublikuvav specifikaciyu OpenGL 3 0 SpecifikaciyaNa bazovomu rivni OpenGL ce vsogo lishe specifikaciya tobto prosto dokument yakij opisuye nabir funkcij ta yih tochnu povedinku Na osnovi cih specifikacij virobniki aparatnogo zabezpechennya stvoryuyut realizaciyi biblioteki funkcij yaki vidpovidayut zayavlenij v OpenGL specifikaciyi Ci realizaciyi proektuyutsya dlya togo shob pri mozhlivosti vikoristovuvati mozhlivosti aparatnogo zabezpechennya Koli aparatne priskorennya ne dopuskayetsya vikonannya funkcij zdijsnyuyetsya za dopomogoyu programnogo zabezpechennya Virobniki povinni projti specialni testi na vidpovidnist persh nizh yihnyu realizaciyu klasifikuvatimut yak realizaciyu OpenGL Takim chinom rozrobnikam programnogo zabezpechennya neobhidno vsogo lish navchitisya vikoristovuvati opisani u specifikaciyi funkciyi i lishiti yihnyu realizaciyu za rozrobnikami aparatnogo zabezpechennya Efektivni realizaciyi OpenGL isnuyut dlya operacijnih sistem Linux MacOS Microsoft Windows ta bagatoh UNIX podibnih OS a takozh dlya takih igrovih boksiv yak Sony PlayStation 3 Rizni programni realizaciyi OpenGL isnuyut dlya platform virobniki yakih ne pidtrimuyut danu specifikaciyu Vidkrita open source biblioteka Mesa povnistyu OpenGL sumisnij programnij API Odnak dlya togo shob uniknuti vitrat na licenzuvannya pov yazanih z formalizaciyeyu yaka vimagayetsya dlya oficijnogo viznannya realizaciyi Mesa ye neoficijnoyu realizaciyeyu specifikaciyi hocha j povnistyu z neyu sumisna ArhitekturaOpenGL oriyentuyetsya na taki dva zavdannya Shovati skladnosti adaptaciyi riznih 3D priskoryuvachiv nadayuchi rozrobniku yedinij API Prihovati vidminnosti v mozhlivostyah aparatnih platform vimagayuchi realizaciyi vidsutnoyi funkcionalnosti za dopomogoyu programnoyi emulyaciyi Osnovnim principom roboti OpenGL ye otrimannya naboriv vektornih grafichnih primitiviv u viglyadi tochok linij ta bagatokutnikiv z nastupnoyu matematichnoyu obrobkoyu otrimanih danih ta pobudovoyu rastrovoyi kartinki na ekrani i abo v pam yati Vektorni transformaciyi ta rasterizaciya vikonuyutsya grafichnim konveyerom graphics pipeline yakij vlasne yavlyaye soboyu diskretnij avtomat Absolyutna bilshist komand OpenGL potraplyayut v odnu z dvoh grup abo voni dodayut grafichni primitivi na vhid v konveyer abo konfiguruyut konveyer na rizne vikonannya transformacij OpenGL ye nizkorivnevim procedurnim API sho zmushuye programista diktuvati tochnu poslidovnist krokiv shob pobuduvati rezultuyuchu rastrovu grafiku imperativnij pidhid Ce ye osnovnoyu vidminnistyu vid deskriptornih pidhodiv koli vsya scena peredayetsya u viglyadi strukturi danih najchastishe dereva yake obroblyayetsya i buduyetsya na ekrani Z odnogo boku imperativnij pidhid vimagaye vid programista glibokogo znannya zakoniv trivimirnoyi grafiki ta matematichnih modelej z inshogo boku daye svobodu vprovadzhennya riznih innovacij RozshirennyaRozvitok novih tehnologij vimagaye rozshirennya funkcionalnosti OpenGL Virobniki GPU mozhut dodavati do biblioteki novi funkciyi cherez mehanizm rozshiren Rozshirennya rozpovsyudzhuyutsya za dopomogoyu dvoh skladovih zagolovkovogo fajlu v yakomu znahodyatsya prototipi opisi novih funkcij i konstant a takozh drajvera pristroyu Kozhen virobnik maye abreviaturu yaka vikoristovuyetsya pri imenuvanni jogo novih funkcij i konstant Dlya prikladu kompaniya NVIDIA maye abreviaturu NV yaka vikoristovuyetsya v zminnij GL NV half float konstanti GL HALF FLOAT NV ta funkciyi glVertex2hNV Mozhe trapitisya tak sho pevne rozshirennya mozhut realizovuvati dekilka virobnikiv U comu vipadku vikoristovuyetsya abreviatura EXT napriklad glDeleteRenderbuffersEXT U razi zh koli rozshirennya shvalyuyetsya konsorciumom ARB vono nabuvaye abreviaturi ARB i staye standartnim Zazvichaj rozshirennya shvaleni konsorciumom ARB vklyuchayutsya do odniyeyi z nastupnih specifikacij OpenGL Spisok specifikacij rozshiren mozhna znajti tut 8 sichnya 2017 u Wayback Machine DodatkoviIsnuye ryad bibliotek stvorenih poverh abo na dodatok do OpenGL Napriklad biblioteka GLU sho ye praktichno standartnim dopovnennyam OpenGL i zavzhdi yiyi suprovodzhuye pobudovana poverh ostannoyi tobto vikoristovuye yiyi funkciyi dlya realizaciyi svoyih mozhlivostej Inshi biblioteki yak napriklad GLUT i SDL stvoreni dlya realizaciyi mozhlivostej nedostupnih v OpenGL Do takih mozhlivostej nalezhat stvorennya interfejsu koristuvacha vikna knopki menyu ta in nastrojka kontekstu malyuvannya oblast malyuvannya yaku vikoristovuye OpenGL obrobka povidomlen vid pristroyiv vvedennya vivedennya klaviatura misha ta in a takozh robota z fajlami Zazvichaj kozhnij vikonnij menedzher maye vlasnu biblioteku rozshirennya dlya realizaciyi visheopisanih mozhlivostej napriklad WGL v Windows abo GLX v X Window System odnak biblioteki GLUT i SDL ye kros platformenimi sho polegshuye perenesennya napisanih dodatkiv na inshi platformi Biblioteki GLEW The OpenGL Extension Wrangler Library i GLEE The OpenGL Easy Extension library stvoreni dlya polegshennya roboti z rozshirennyami ta riznimi versiyami OpenGL Ce osoblivo aktualno dlya programistiv v Windows oskilki zagolovni ta bibliotechni fajli sho postavlyayutsya z Visual Studio znahodyatsya na rivni versiyi OpenGL 1 1 OpenGL maye lishe nabir geometrichnih primitiviv tochki liniyi bagatokutniki z yakih stvoryuyutsya vsi trivimirni ob yekti Chasom podibnij riven detalizaciyi ne zavzhdi zruchnij pri stvorenni scen Tomu poverh OpenGL buli stvoreni vishorivnevi biblioteki taki yak Open Inventor i VTK Dani biblioteki dozvolyayut operuvati bilsh skladnimi trivimirnimi ob yektami sho polegshuye ta priskoryuye stvorennya trivimirnoyi sceni GLM OpenGL Mathematics Dopomizhna biblioteka sho nadaye programistam na C klasi ta funkciyi dlya vikonannya matematichnih operacij Biblioteka mozhe vikoristovuvatisya pri stvorenni 3D program z vikoristannyam OpenGL 2 Odniyeyu z harakteristik GLM ye te sho realizaciya zasnovana na specifikaciyi GLSL Vihidnij kod GLM vikoristovuye licenziyu MIT Nezalezhnist vid movi programuvannyaDlya pidtverdzhennya nezalezhnosti vid movi programuvannya buli rozrobleni rizni varianti priv yazki binding funkcij OpenGL abo povnistyu pereneseni na inshi movi Odnim iz prikladiv mozhe sluzhiti biblioteka Java 3D yaka mozhe vikoristovuvati aparatne priskorennya OpenGL Pryama priv yazka funkcij realizovana v Lightweight Java Game Library 3 Yaka maye pryamu priv yazku OpenGL dlya Java Sun takozh vipustila versiyu Java OpenGL JOGL yaka nadaye pryamu priv yazku do Si funkcij OpenGL na vidminu vid Java 3D yaka ne maye nastilki nizkorivnevoyi pidtrimki Oficijnij sajt OpenGL maye posilannya na priv yazki dlya mov Java Fortran 90 Perl Pike Python Ada Visual Basic i Pascal 4 Ye takozh varianti priv yazki OpenGL dlya mov C i C 5 OpenGL 2 0 U porivnyanni iz DirectX stverdzhuvalos sho osnovnoyu problemoyu OpenGL ye Konsorcium v yakij vhodit velika kilkist kompanij iz riznimi interesami sho prizvodit do dovgogo periodu prijnyattya novoyi versiyi specifikaciyi OpenGL versiyi 2 0 buv predstavlenij 3Dlabs u vidpovid na hvilyuvannya vidnosno povilnogo rozvitku i nechitkogo napravlennya OpenGL Kompaniya 3Dlabs zaproponuvala ryad suttyevih dopovnen do standartu najbilsh znachimim iz yakih bulo dodavannya do yadra OpenGL shejdernoyi movi programuvannya GLSL OpenGL Shading Language Ce dozvolilo programistam zaminiti fiksovanij konveyer OpenGL nevelikimi shejdernimi programami na specialnij shejdernij movi dlya stvorennya riznih vizualnih efektiv takih yak bump mapping normal mapping paralax mapping HDR i t d She do vvedennya v standart OpenGL movi GLSL isnuvala mozhlivist rozroblyati specefekti na asemblernih movah rozshirennya vertex program fragment program specifichnih dlya virobnika ATI Nvidia i na shejdernij movi NVidia C for Graphics vid kompaniyi NVidia OpenGL 3 0 Specifikaciya OpenGL 3 0 dodaye velikij obsyag novoyi funkcionalnosti OpenGL 3 0 vklyuchaye novu versiyu movi programuvannya shejderiv GLSL 1 30 a takozh zabezpechuye vsebichnu pidtrimku suchasnih programovanih grafichnih rishen Krim togo robocha grupa viznachila nabir rozshiren OpenGL 3 0 yaki dozvolyat dodati novu funkcionalnist v nastupnu versiyu OpenGL Sered osnovnih osoblivostej OpenGL 3 0 masivi tekstur 32 bitovij bufer glibini z ruhomoyu komoyu novi rezhimi stisnennya tekstur i inshe U rozrobci specifikaciyi OpenGL 3 0 brali aktivnu uchast fahivci kompanij AMD Intel i nVidia Za ocinkami analitikiv kompaniyi Jon Peddie Research vstanovlena baza grafichnogo ustatkuvannya z pidtrimkoyu OpenGL 3 0 perevishuye 60 miljoniv pristroyiv OpenGL 4 0 11 bereznya 2010 roku Khronos Group predstavila finalnij variant specifikaciyi OpenGL 4 0 i movi opisu shejderiv GLSL 4 0 OpenGL 4 0 povnistyu sumisnij nazad iz starimi rozshirennyami OpenGL vikoristovuyuchi rezhim sumisnosti vvedenij v OpenGL 3 2 Novovvedennya Dva novi stupeni obrobki shejderiv sho dozvolyaye perenesti obrobku teselyaciyi z centralnogo procesora na GPU Pidtrimka vibirkovih fragmentnih shejderiv per sample fragment shaders i programovanih fragmentnih shejderiv vhidnih pozicij dlya zbilshennya yakosti renderinga i gnuchkosti v upravlinni zgladzhuvannyam Promalovuvannya danih sho zgenerovani OpenGL abo takimi zovnishnimi API yak OpenCL bez uchasti centralnogo procesora Shejderni pidprogrami dopomozhut znachno zbilshiti gnuchkist napisannya program Rozdilennya stanu tekstur i teksturovanih danih cherez dodavannya novogo tipu danih pid nazvoyu ob yekti sempliv 64 bitova podvijna tochnist z ruhomoyu komoyu operacij z shejderami i vvedennyam vivedennya dlya zbilshennya tochnosti i yakosti renderinga Zbilshennya produktivnosti vklyuchayuchi shejderi geometriyi zrazka masiviv zrazka i novih zapitiv do tajmera ProektOpenGL obslugovuye dvi cili Dlya togo shob prihovuvati skladnoshi vstanovlennya zv yazku komp yutera z riznimi 3D videopriskoryuvachami nadati programistovi odin zagalnoprijnyatij API Dlya togo shob prihovati mozhlivosti bazovih instrumentalnih mashin yaki vidriznyayutsya svoyim namagannyam vikonati pidtrimku povnogo naboru osoblivostej OpenGL vikoristannya programnoyi emulyaciyi yaksho neobhidno Priklad Dlya pochatku ochistimo bufer v yakomu zberigayetsya kolir shob rozpochati robotu z chistogo polotna glClear GL COLOR BUFFER BIT Teper vstanovimo modelview matricyu yaka upravlyaye poziciyeyu kameri shodo primitiviv Peremishuyemo yiyi na 3 poziciyi uzdovzh osi z glMatrixMode GL MODELVIEW glLoadIdentity glTranslatef 0 0 3 Matricya proektu upravlyaye perspektivnim efektom prikladenim do primitiviv i upravlyayetsya podibno do modelview matrici glMatrixMode GL PROJECTION glLoadIdentity glFrustum 1 1 1 1 1 1000 Nareshti mi vipuskayemo bagatokutnik zelenij rivno oriyentovanij na XY osi glBegin GL POLYGON glColor3f 0 1 0 glVertex3f 1 1 0 glVertex3f 1 1 0 glVertex3f 1 1 0 glVertex3f 1 1 0 glEnd DokumentaciyaZnachnoyu miroyu populyarnist OpenGL pov yazana z nayavnistyu velikoyi kilkosti yakisnoyi dokumentaciyi vipustila ryad posibnikiv razom iz specifikaciyeyu yaku bulo onovleno dlya vidobrazhennya zmin v API Ce majzhe universalni posibniki vidomi yak kolorovi The Red Book Posibnik z OpenGL dlya programistiv ISBN 0 321 33573 2 Chitkij dovidnik ta posibnik neobhidna rich dlya OpenGL programistiv The Blue Book Dovidnik z OpenGL ISBN 0 321 17383 X Po suti zhorstkij zbirnik man The Green Book Programuvannya OpenGL dlya X Window System ISBN 0 201 48359 9 Pidruchnik po interfejsu X11 ta GLUT The Alpha Book Ne formalno The White Book Programuvannya OpenGL dlya Windows 95 ta Windows NT ISBN 0 201 40709 4 Pidruchnik z interfejsu OpenGL v Microsoft Windows Pidruchniki z OpenGL 2 0 ta piznishih versij The Orange Book Posibnik z OpenGL Shading Language ISBN 0 321 33489 2 Chitkij dovidnik ta posibnik po GLSL VinoskiOpenGL ARB Meeting Notes March 9 10 1998 www opengl org Procitovano 27 lipnya 2022 Khronos Press Release OpenGL ARB to Pass Control of OpenGL Specification to Khronos Group 3 travnya 2008 u Wayback Machine Arhiv originalu za 13 serpnya 2008 Procitovano 12 serpnya 2008 Arhiv originalu za 6 sichnya 2014 Procitovano 8 sichnya 2014 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya How to Create Khronos API Extensions Opengl org 13 serpnya 2006 Arhiv originalu za 15 kvitnya 2013 Procitovano 7 listopada 2012 Khronos Unleashes Cutting Edge Cross Platform Graphics Acceleration with OpenGL 4 0 Khronos Press Releases 11 bereznya 2010 Arhiv originalu za 25 serpnya 2011 Procitovano 11 bereznya 2010 Obzor novshestv OpenGL 4 0 na OpenNet Arhiv originalu za 24 chervnya 2013 Procitovano 12 bereznya 2010 Divis takozhOpenGL ES OpenAL LWJGL en GLUTResursi tenetOficijnij sajt Specifikaciya 14 serpnya 2008 u Wayback Machine Sho take OpenGL nedostupne posilannya z chervnya 2019