Графічна бібліотека OpenGL

20 0 Новини високих технологій

Open Graphics Library - це стандартне графічне додатком для 2D та 3D-візуалізації, розробленого в 1992 році. Opengl поставляється в двох варіантах. Перший з них — «Мікрософт OpenGL», який часто включається в «Віндовс» для установки графічної карти. Другий — Cosmo OpenGL - призначений для систем, у яких немає прискореної відеокарти. Бібліотека OpenGL - основна умова роботи програми.

Користувальницький огляд OpenGL

Графічна бібліотека OpenGL
До OpenGL будь-яка компанія, розробляє графічне додаток, повинна була переписати графічну частину для кожної платформи операційної системи. З них можна створювати одні і ті ж ефекти в різних операційних системах, використовуючи будь-який графічний адаптер, що підтримує програму. OpenGL задає набір «команд» або відразу виконуваних функцій, кожна з яких направляє дію малювання або викликає спеціальні ефекти. Список їх може бути створений для повторюваних ефектів.


OpenGL не залежить від характеристик «Віндовс» кожної операційної системи, але надає спеціальні підпрограми для ОС. Вона випускається з величезним переліком вбудованих можливостей, запитуваних через API. До них відносяться:
  • приховане видалення поверхні;
  • альфа-змішування (прозорість);
  • згладжування;
  • текстуроване картування;
  • операції з пікселями;
  • перегляд і моделювання трансформацій;
  • атмосферні ефекти (туман і дим).
  • Silicon Graphics - розробники передових графічних робочих станцій - ініціювала розробку OpenGL. DEC, Intel, IBM, Microsoft і Sun Microsystems увійшли в галузеву комісію з огляду архітектури. Розробка додатків, що використовують API OpenGL, не несе ніяких витрат, крім навчання. Microsoft пропонує безкоштовне завантаження її бібліотек для своїх систем.


    Набір модулів для Windows

    Додаток доступно на багатьох системах Win32 і Unix. А f90gl — це реалізація публічного домену офіційних зв'язків Fortran 90 OpenGL, оформлена у вигляді бази даних модулів і бібліотек, визначає необхідні інтерфейси для функціональності програми. Сам f90gl був розроблений Вільямом Ф. Мітчеллом технологічного інституту Гейтерберга в США. До недавнього часу OpenGL LF9x можна було створювати тільки у вигляді статично пов'язаних програм, орієнтованих на Visual C. В даний час доступний набагато більш доброзичливий метод завдяки зусиллям по перенесенню, реалізованим Lawson B. Wakefield з Великобританії. Ця реалізація зробила інтерфейс OpenGL доступним в рамках WiSK і Winteracter і була виконана на добровільній, некомерційній основі. Для підключення бібліотеки OpenGL потрібні певні DLL OpenGL, встановлені в каталозі Windows SYSTEM32. До них відносяться наступні:
  • opengl32.dll;
  • glu32.dll;
  • glut32.dll.
  • Перші дві з цих бібліотек OpenGL (вивчити їх перед установкою необхідно), є стандартною частиною Windows різних модифікацій і Me. Бібліотеки і модулі f90gl повинні бути встановлені в LIB-каталозі LF95:
  • F90GL.LIB;
  • F90GLU.LIB;
  • F90GLUT.LIB;
  • OPENGL32.LIB;
  • GLU32.LIB;
  • GLUT32.LIB;
  • OPENGL.MOD;
  • OPENGL2.MOD;
  • OPENGL_KINDS.MOD;
  • OPENGL_GLINTERFACES.MOD;
  • OPENGL_FWRAP.MOD;
  • OPENGL_GLUINTERFACES.MOD;
  • OPENGL_GLU.MOD;
  • OPENGL_GLUTINTERFACES.MOD;
  • OPENGL_GLUT.MOD;
  • OPENGL_GL.MODd.
  • Компіляція і зв'язування програм f90gl вимагає, щоб каталог LF95 LIB вказувався в дорозі модуля компілятора і імена бібліотек f90gl для зв'язування.

    Бібліотеки зображень

    Графічна бібліотека OpenGL
    DevIL використовується для розробників. Він підтримує безліч форматів зображень для читання і запису, кілька компіляторів і ОС («Віндовс», «Лінукс», Мас). Бібліотека має наступний синтаксис :
  • FreeImage — це крос-платформна бібліотека OpenGL завантаження зображень з дуже широкою підтримкою форматів (включаючи деякі HDR-формати, такі як OpenEXR).
  • OpenImageIO (OIIO) — це бібліотека для читання і запису зображень, а також безліч пов'язаних класів, утиліт і додатків. Широко використовується в анімаційних та VFX-студіях по всьому світу, а також вбудована в кілька комерційних продуктах.
  • SOIL — це крос-платформний завантажувач зображень загального користування, який надзвичайно малий. C ++, здатний завантажувати текстури DDS (DDS9 і DDS10) за ліцензією MIT.
  • Glraw надає інструмент командного рядка, який перетворює файли зображень у необроблені, безпосередньо містять прості текстурні дані.
  • Імпорт активів 3D-файлів

    Графічна бібліотека OpenGL для імпорту активів (Assimp) представлена як бібліотека з відкритим вихідним кодом для імпорту різноманітних популярних тривимірних моделей. Остання версія експортує 3d-файли і підходить як конвертер загального призначення. Є кілька видів таких бібліотек:
  • Може читати різні формати файлів 3D - COLLADA, власні файли Blender3D, Wavefront Obj (.obj) і багато інших. Бібліотека lib3ds призначена для читання 3ds-файлів.
  • Open3mod — це засіб перегляду моделі на базі Windows. Він завантажує всі формати файлів, які підтримує Assimp, і ідеально підходить для швидкої перевірки 3D-активів.
  • AssetKit (In Progress) — бібліотека OpenGL імпортер/експортер 3D-ресурсів, утиліта, заснована на специфікаціях COLLADA/glTF. Головну увагу тут приділено COLLADA glTF. Вона буде повністю підтримувати формати 141.411.5+, а також деякі інші в якості бібліотеки для завантаження моделей в OpenGL.
  • Високопродуктивна 2D/3D-графіка

    Графічна бібліотека OpenGL
    Графічна бібліотека OpenGL для Android включає підтримку високопродуктивної 2D і 3D-графіки з відкритою бібліотекою, зокрема API OpenGL ES. Android підтримує її як через API-інтерфейс інфраструктури, так і Native Development Kit (NDK). У платформі названої операційної системи є два фундаментальних класу, які дозволяють створювати і маніпулювати графікою з допомогою API: GLSurfaceView і GLSurfaceView.Renderer. Якщо є мета використовувати OpenGL в додатку для Android, то потрібно розуміти, як реалізувати ці класи в дії. Так, GLSurfaceView може малювати і маніпулювати об'єктами, використовуючи виклики API OpenGL аналогічно функції SurfaceView. Цей інтерфейс визначає методи, необхідні для малювання графіки a GLSurfaceView. І користувач повинен забезпечити реалізацію цього інтерфейсу як окремий клас і прикріпити до GLSurfaceView примірник GLSurfaceView.setRenderer. Після того як створений контейнерний вигляд для OpenGL ES, GLSurfaceView і GLSurfaceView.Renderer, можна почати підключення бібліотеки OpenGL і використовувати API.

    Набір мобільних графічних пристроїв

    Реалізації програми розрізняються для Android-пристроїв підтримуваними розширеннями API і включають стиснення текстур і інший набір функцій. Android Extension Pack (AEP) підтримує стандартну базу розширень. Упаковка їх разом сприяє послідовному набору функціональності на всіх пристроях, дозволяючи розробникам повною мірою використовувати новітній пакет мобільних графічних конструкцій. AEP також покращує підтримку зображень, буферів зберігання шейдерів і лічильників. Щоб додаток могло використовувати AEP, версія платформи повинна підтримувати її. Потрібно також позначить вимога AEP наступним чином:

    Перевірка і вибір версії OpenGL ES

    На Android-пристроях доступно кілька версій програми. Можна вказати мінімальну версію API, яка вимагається додатком в телефоні. Версія API opengl ES 1.0 версія 2.0 версія 3.0 забезпечують високопродуктивні графічні інтерфейси для створення 3D-ігор, візуалізації і користувальницьких інтерфейсів. Програма для OpenGL ES 2.0 в чому схожа на версію 3.0 що представляє собою надмножество API 2.0 з додатковими функціями.
    Програмування для 1.0 /1.1 API порівняно з 2.0 і 3.0 значно відрізняється, і тому розробникам слід уважно вивчити деякі фактори, перш ніж починати розробку з допомогою цих API. Так, в загальному, 2 і 3 забезпечують більш швидку графічну продуктивність, ніж API ES 1/11. Тим не менш різниця в ній може змінюватись в залежності від пристрою Android, на якому працює програма, з-за відмінностей в реалізації апаратного забезпечення графічного конвеєра.

    Порівняння з драйверами DirectX

    Графічна бібліотека OpenGL
    У Windows графічні драйвери DirectX підтримуються якісніше, ніж OpenGL, незважаючи на те, що розробники керують з більш швидких. Бібліотеки OpenGL і DirectX (історія та перспективи їх) пов'язані з «Мікрософт», яка фактично виступила проти OpenGL. У 2003 році Microsoft заявила, що їй більше не цікаві плани OpenGL. Потім у 2005 році вони на презентації в SIGGRAPH зробили заяву, що Windows Vista видалить її підтримку. Ця кампанія викликала хаос в співтоваристві OpenGL, після чого багато програмісти в області професійної графіки перейшли на DirectX. Після того як Vista все ж була випущена, гучні заяви виконані не були - постачальники створили нові продуктивні драйвери (ICD), які відновлюють вбудовану функцію. Open розсилала інформаційні бюлетені з інформацією, що як і раніше є кращим додатком. Тим не менш шкоди вже завдано, а суспільна довіра до OpenGL сильно похитнулося. Насправді OpenGL більш потужний, ніж DirectX, підтримує більше платформ і має переважне значення для майбутнього ігор. Історія і перспективи бібліотек OpenGL і DirectX говорять про те, що перша з них має все-таки більше позитиву:
  • Надає можливість використовувати функції графіки для оперативних систем, в той час як DirectX надає тільки моментальні елементи з них у новітніх версіях «Віндовс». Технологія тесселяції, яку Microsoft разработывал DirectX 11 була розширенням OpenGL протягом трьох років. Шляхом кропіткої праці вдалося домогтися того, що DirectX 10 і 11 тепер працюють так само швидко, як і OpenGL, і підтримують майже стільки ж функцій. Проте є одна велика проблема: вони не працюють в Windows XP, якої досі користуються багато людей.
  • Крос-платформний. Багато користувачів Lugaru працюють на Mac, Linux і Windows XP і не можуть грати через DirectX. Єдиний спосіб доставити новітню графіком для геймерів Windows XP — через 32bits бібліотеки opengl.
  • Краще для майбутнього ігор. Це некомерційний відкритий стандарт, створений для того, щоб користувачі на будь-якій платформі могли отримувати високоякісну графіку, яку предоставиляет їх обладнання. Його розвиток руйнується сьогодні монополістичної атакою корпоративного гіганта, намагається домінувати у галузі. Ось чому Direct3D стає єдиним ігровим графічних API, підтримуваних Windows.
  • C ++ і налаштування Visual Studio

    Графічна бібліотека OpenGL
    Бібліотека OpenGL для c має безкоштовну версію. Фахівці рекомендують скомпілювати програми, написані на ANSI C з OpenGL і GLUT, з допомогою Dev-C ++. Bloodshed Dev-C ++ - це безкоштовний компілятор C ++ та середовища розробки для операційних систем Windows. Як і більшість таких же технічних засобів, його можна використовувати для компіляції ANSI C. Встановивши заголовні файли та бібліотеки GLUT, його застосовують для написання програм. Для реалізації цього проекту можна використовувати 32-чи 64-розрядну «Віндовс». Перед тим як підключити до dev c бібліотеку OpenGL, знадобляться заголовки glew, які можна знайти на вебсайті sourceforge Extension Wrangler, і версія freeglut для Visual Studio:
  • Натиснути посилання всередині пакета freeglut 300 MSVC.
  • Ввести ім'я файлу, який потрібно завантажити.
  • Завантажити його, в папці з freeglut.
  • Витягти і перейменувати в freeglut.
  • Загальний каталог для установки: C: DEV.
  • Каталог, в якому містяться проекти: C: DEV visual-studio-c ++.
  • Каталог, в якому знаходяться бібліотеки: C: DEV Lib для Visual Studio.
  • Відкрити його і створити порожній проект > «Шаблони»> Visual C ++> Порожній проект.
  • Потім написати «Ім'я»: Shapes2D.
  • Місце розташування: C: dev visual-studio-c ++ .
  • Створити нове рішення в OpenGL-бібліотеці для Visual Studio. Назва рішення: BadprogTutorial OK.
  • Проект Shapes2D створений у вирішенні BadprogTutorial.
  • Додати main.cpp> Клікнути правою кнопкою миші «Проект»> «Додати»> «Новий елемент»> Visual C ++> Файл C ++. Написати ім'я: main.cpp і додати.
  • Налаштувати конфігурації бібліотеки GL і OpenGL glut.
  • Клікнути мишею проект Shapes2D> «Властивості». У лівому верхньому куті розкривного меню знайти «Конфігурація» вибрати всі конфігурації (замість Debug).
  • Клацнути мишею на «Властивості конфігурації»> C /C ++> «Загальні»> «Додаткові каталоги вкладень». Справа знаходиться спадне меню, натиснути «Змінити ».
  • З'явилося нове вікно: «Додаткові каталоги».
  • Натиснути значок «Нова лінія»> кнопку "огляд" і вибрати дві наступні папки: C: DEV Lib Glew-1120 . C: DEV Lib freeglut-300 .
  • Натиснути кнопку ОК. Застосувати використання бібліотеки OpenGL, включаючи бібліотеки, бібліотечні папки.
  • Клацнути правою кнопкою миші проект Shapes2D> «Параметри» > «Властивості конфігурації»> «Коннектор»> «Загальні»> «Додаткові каталоги бібліотек».
  • Справа знаходиться спадне меню. Натиснути «Змінити ». З'явилося нове вікно: «Додаткові бібліотеки».
  • Натиснути значок «Нова лінія»> натиснути кнопку "огляд" > вибрати дві наступні папки для 64-розрядної версії: C: DEV Lib Glew-1120 Lib Release x64 і C: DEV Lib freeglut-300 Lib x64.
  • Натиснути кнопку ОК> застосувати бібліотечні файли. Клікнути мишею проект Shapes2D> «Властивості» > «Властивості конфігурації»> «Коннектор»> Enter».
  • Справа знаходиться спадне меню, натисніть «Змінити ».
  • З'явилося нове вікно: «Додаткові залежності». Кликнуите по білій області і напишіть: freeglut.lib.
  • Натиснути клавішу Enter, щоб перейти до наступного рядка: glew32.lib.
  • Натиснути «Застосувати» і "ОК".
  • Тепер Visual Studio IDE готова працювати з OpenGL.

    Завантаження Dev-C ++

    Ці інструкції були протестовані на великому безлічі систем Windows, які поставляються з файлами, необхідними для OpenGL, але не для файлів, необхідних для GLUT. Dev-C ++ не працює з Vista від Microsoft. Процедура завантаження:
  • Завантажте Dev-C ++ та встановіть його.
  • Отримайте Dev-C ++ 5.0 beta 9.2 (499.2) (9.0 MB) з Mingw /GCC 342 (хоча це «бета-версія», вона відмінно працює).
  • Тепер потрібно натиснути на SourceForge, щоб перейти до списку сайтів завантаження, і вибрати один.
  • Зберегти цей файл у такому місці, як C: Temp.
  • Коли завантаження буде завершено, натиснути кнопку «відкрити», щоб почати процес установки. Або перейти до C: Temp і двічі клікнути по devcpp499.2_setup.exe.
  • Вибрати «типову» установку. Прийняти запропонований пункт призначення для установки.
  • Відповісти: «Так», коли установка запитує, чи хочете встановити Dev-cpp для всіх користувачів. На екрані з'являється повідомлення, що установка завершена. Натиснути «Готово». З'явиться перший екран конфігурації.
  • Вибрати «Англійська» і «Новий погляд». На наступних екранах натиснути «Так». Програма запускається автоматично.
  • Натиснути «Файл», потім створити проект.
  • Вибрати ім'я для проекту (наприклад, «myProject»).
  • Натиснути «C Project», «Порожній проект» і ОК.
  • У вікні «Створити новий проект» натиснути «Зберегти».
  • Натиснути «Файл /Новий /Вихідний файл» і в «Додати файл в поточний проект» натиснути «Так».
  • Натиснути «Файл /Зберегти як» і зберегти файл як «hello.c» (або інше ім'я). Важливо переконатися, що розширення файлу .c. З будь-яким іншим розширенням (наприклад, запропонованим .cpp) виникнуть проблеми з компіляцією.
  • Натиснути «Виконати /Скомпілювати і запустити». Програма компілюється, запускає і записує свій висновок у вікно DOS.
  • Спробувати інший спосіб запуску програми (після її компіляції) — запустити вікно DOS поза системи Dev-Cpp.
  • Перейти до підкаталогу, в якому міститься проект, і набрати hello.exe.
  • Знайти Dev-C ++, зазначений у розділі «Програми» з пускового меню.
  • Тепер користувач зможе створювати, компілювати та запускати програми C (і C ++). У нього будуть файли, бібліотеки dll для OpenGL (і всіх інших стандартних пакетів), але не GLUT. GLUT управляє вікнами і іншими компонентами інтерфейсу, необхідними для нього, і їх встановлюють окремо .

    Установка і запуск програми на Windows 7

    Графічна бібліотека OpenGL
    Платформа виконання для Visual Studio 2010 - Integrated. Середа (IDE), під управлінням Windows 7. Вам потрібно завантажити і встановити Microsoft Visual C ++ 2010 Express. А після того, як Visual C ++ успішно встановлений, слід виконати наступні дії:
  • Завантажити і розпакувати файл freeglut-MSVC-281-1.
  • Відкрити екран привітання Visual C ++ 2010 з меню «Пуск».
  • Створити новий проект, вибравши File -> New -> Project.
  • Вибрати Win32 на панелі Встановлені шаблони», а потім «Консольний додаток Win32» з наступною панелі.
  • Назвати свій проект і вибрати папку, у яку потрібно зберегти.
  • Зняти прапорець «Створити каталог для вирішення».
  • Натиснути OK, щоб відкрити вікно привітання майстра і «Настройки програми» для діалогового вікна налаштувань.
  • Зняти прапорець «Попередньо скомпільовані заголовок», встановити прапорець «Порожнє проект» і вибрати «Консольний додаток».
  • Натиснути «Готово», щоб побачити нове вікно проекту бібліотеки OpenGL для Windows 7.
  • Натиснути мишею на Source Files і вибрати Add -> New Item, щоб відкрити діалогове вікно.
  • Вибрати «Код» на панелі Встановлені шаблони» і «Файл C ++» (.cpp) з наступною панелі.
  • Назвати свій файл і натиснути «Додати», щоб побачити порожню панель коду у вікні проекту з назвою «Вибране ім'я».
  • Зберегти і створити проект, перейшовши в Debug -> Build Solution. Потім виконати програму з допомогою Debug -> Start Debugging.
  • Якщо графічна карта не підтримує OpenGL 4.3 то програми, що використовують його, можуть компілюватися, але не виконуватися, оскільки система не може надати контекст рендеринга OpenGL 4.3 заданий командою glutInitContextVersion (4. 3) основною процедурою. У цьому випадку можна замінити Version 4.3 на 3.3 або навіть на 2.1. Хоча майже всі платформи підтримують OpenGL API, розробникам необхідно створювати індивідуальні програми для різних платформ. Це пов'язано з тим, що графіка є лише частиною програми, а інші компоненти як і раніше відрізняються між платформами. Щоб виправити це, WebApp був розроблений для запуску цілих програм у веб-браузері, таких як Chrome і Firefox. Так що одна програма може працювати на всіх платформах з сумісним браузером.
    Графічна бібліотека OpenGL
    Між тим на стороні клієнта все передається «на льоту» з серверів, тому подальша установка програми не потрібно. Спеціальний API під назвою WebGL також був створений для Інтернету і заснований на ES, підмножині OpenGL, розробленому спеціально для мобільних пристроїв. Щоб досягти аналогічної мети для VR, інший API, називаний WebVR, був розроблений, щоб легко довести досвід VR до браузерів, незалежно від платформи.