Панель інструментівІншими мовами |
OpenGLOpenGL — (англ. Open Graphics Library — відкрита графічна бібліотека) — специфікація, що визначає незалежний від мови програмування крос-платформовий програмний інтерфейс (API) для написання застосунків, що використовують 2D та 3D комп'ютерну графіку. Даний інтерфейс містить понад 250 функцій, які можуть використовуватися для малювання складних тривимірних сцен з простих примітивів. Широко застосовується індустрією комп'ютерних ігор і віртуальної реальності, при візуалізації наукових даних, в системах автоматизованого проектування тощо.
[ред.] ІсторіяСтандарт OpenGL був розроблений і затверджений у 1992 році передовими компаніями в області розробки апаратного та програмного забезпечення для роботи з комп'ютерною графікою. Метою співпраці було створення апаратно-незалежного інтерфейсу придатного для реалізації на різних платформах. Основою стандарту стала бібліотека IRIS GL, розроблена компанією Silicon Graphics. Курт Акелей (Kurt Akeley) і Марк Сіґал (Mark Segal) створили оригінальну специфікацію OpenGL. Кріс Фразаєр (Chris Frazier) редагував версію 1.1, а Джон Ліч (Jon Leech) версії з 1.2 по 2.0. 31 липня 2006 року на SIGGRAPH було анонсовано, що контроль за специфікацією OpenGL буде переданий Khronos Group[1]. У серпні 2008 Khronos Group опублікував специфікацію OpenGL 3.0[2]. [ред.] СпецифікаціяНа базовому рівні, OpenGL - це всього лиш специфікація, себто, це - просто документ, який описує набір функцій і їх точну поведінку. На основі цих специфікацій виробники апаратного забезпечення створюють реалізації - бібліотеки функцій, які відповідають заявленій в OpenGL специфікації. Ці реалізації проектуються для того, щоб при можливості використовувати можливості апаратного забезпечення. Коли апаратне прискорення не допускається, виконання фукнцій здійснюється за допомогою програмного забезпечення. Виробники повинні пройти спеціальні тести на відповідність, перш, ніж їхню реалізацію класифікуватимуть, як реалізацію OpenGL. Таким чином, розробникам програмного забезпечення необхідно всього лиш навчитися використовувати описані у специфікації функції, іі лишити їхню реалізацію за розробниками апаратного забезпечення. Ефективні реалізації OpenGL існують для операційних систем Linux, MacOS X, Microsoft Windows та багатьох UNIX-подібних ОС, а також для таких ігрових боксів, як Sony PlayStation 3. Різні програмні реалізації OpenGL існують для платформ, виробники яких не підтримують дану специфікацію. Відкрита (open source) бібліотека Mesa - повністю OpenGL сумісний програмний API. Однак, для того, щоб уникнути витрат на ліцензування, пов'язаних з формалізацією, яка вимагається для офіційного визнання реалізації, Mesa є неофіційною реалізацією специфікації, хоча й повністю з нею сумісна. [ред.] 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 обслуговує дві цілі:
[ред.] Приклад//Для початку очистимо буфер, в якому зберігається колір, щоб розпочати роботу з чистого полота: 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 пов'язана з наявністю великої кількості якісної документації. OpenGL ARB випустила ряд посібників разом із специфікацією, яку було оновлено для відображення змін в API. Це майже універсальні посібники, відомі, як кольорові:
Підручники з OpenGL 2.0 та пізніших версій:
[ред.] РозширенняСтандарт OpenGL, з появою нових технологій, дозволяє окремим виробникам за допомогою механізму розширень додавати до бібліотеки нову функціональність. Розширення розповсюджуються за допомогою двух складових: заголовкового файлу, в якому знаходяться прототипи (описи) нових функцій і констант, а також драйвера пристрою. Кожен виробник має абревіатуру, яка використовується при іменуванні його нових функцій і констант. Наприклад, компанія NVIDIA має абревіатуру NV. Для прикладу, Список специфікацій розширень можна знайти тут. [ред.] Виноски[ред.] Дивіться також[ред.] Ресурси тенет |