Web Analytics
Privacy Policy Cookie Policy Terms and Conditions OpenGL - Вікіпедія

OpenGL

Матеріал з Вікіпедії — вільної енциклопедії.

Логотип проекту OpenGL
Логотип проекту OpenGL

OpenGL (Open Graphics Library - відкрита графічна бібліотека) - специфікація, що визначає незалежний від мови програмування крос-платформовий програмний інтерфейс (API) для написання додатків, що використовують 2D та 3D комп'ютерну графіку. Даний інтерфейс містить понад 250 функцій, які можуть використовуватися для малювання складних тривимірних сцен з простих примітивів. Широко застосовується індустрією комп'ютерних ігор.

Зміст

[ред.] Специфікація

На базовому рівні, OpenGL - це всього лиш специфікація, себто, це - просто документ, який описує набір функцій і їх точну поведінку. На основі цих специфікацій виробники апаратного забезпечення створюють реалізації - бібліотеки функцій, які відповідають заявленій в OpenGL специфікації. Ці реалізації проектуються для того, щоб при можливості використовувати можливості апаратного забезпечення. Коли апаратне прискорення не допускається, виконання фукнцій здійснюється за допомогою програмного забезпечення. Виробники повинні пройти спеціальні тести на відповідність, перш, ніж їхню реалізацію класифікуватимуть, як реалізацію OpenGL. Таким чином, розробникам програмного забезпечення необхідно всього лиш навчитися використовувати описані у специфікації функції, і лишити їхню реалізацію за розробниками апаратного забезпечення.

Ефективні реалізації OpenGL існують для операційних систем Linux, MacOS X, Microsoft Windows та багатьох UNIX-подібних ОС, а також для таких ігрових боксів, як Sony PlayStation 3. Різні програмні реалізації OpenGL існують для платформ, виробники яких не підтримують дану специфікацію. Відкрита (open source) бібліотека Mesa - повністю OpenGL сумісний програмний API. Однак, для того, щоб уникнути витрат на ліцензування, пов'язаних з формалізацією, яка вимагається для офіційного визнання реалізації, Mesa є неофіційною реалізацією специфікації, хоча й повністю з нею сумісна.

Курт Акелей (Kurt Akeley) і Марк Сіґал (Mark Segal) створили оригінальну специфікацію OpenGL. Кріс Фразаєр (Chris Frazier) редагував версію 1.1, а Джон Ліч (Jon Leech) версії з 1.2 по 2.0.

[ред.] Проект

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 пов'язана з наявністю великої кількості якісної документації.

OpenGL ARB випустила ряд посібників разом із специфікацією, яку було оновлено для відображення змін в API. Це майже універсальні посібники, відомі, як кольорові:

Підручники з OpenGL 2.0 та пізніших версій:

  • The Orange Book - Посібник з OpenGL Shading Language. ISBN 0321334892
    Чіткий довідник та посібник по GLSL.

[ред.] Розширення

Стандарт OpenGL, з появою нових технологій, дозволяє окремим виробникам за допомогою механізму розширень додавати до бібліотеки нову функціональність. Розширення розповсюджуються за допомогою двух складових: заголовкового файлу, в якому знаходяться прототипи (описи) нових функцій і констант, а також драйвера пристрою.

Кожен виробник має абревіатуру, яка використовується при іменуванні його нових функцій і констант. Наприклад, компанія NVIDIA має абревіатуру NV. Для прикладу, glCombinerParameterfvNV() або константа GL_NORMAL_MAP_NV. Може трапится так, що певне розширення може реалізовувати декілька виробників. У цьому випадку, використовується абревіатура EXT, наприклад, glDeleteRenderbuffersEXT. У разі ж, коли розширення схвалюється Консорціумом ARB, воно набуває абревіатури ARB і стає стандартним. Зазвичай, розширення, схвалені Консорціумом ARB включаються до однієї з подальших специфікацій OpenGL.

Список специфікацій розширень можна знайти тут.

[ред.] Дивіться також

  • OpenGL ES
  • OpenAL
  • LWJGL
  • JOGL

[ред.] Ресурси тенет


Комп'ютер Це незавершена стаття про комп'ютери.
Ви можете допомогти проекту, виправивши або дописавши її.
THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2006:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu