Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсач програмування.docx
Скачиваний:
9
Добавлен:
05.12.2018
Размер:
302.84 Кб
Скачать

1.5. Графічні бібліотеки

1.5.1 Бібліотека DirectX

За весь час існування бібліотека DirectX пройшла великий шлях і кожна нова версія радувала все новими і новими можливостями. DirectX є базою для XBox API, який використовується розробниками ігор для консолей XBox.

Пакет DirectX SDK

Для успішного запуску комп'ютерної гри, написаної з використанням бібліотеки Direct3D, досить буде встановити пакет DirectX Runtime, що містить набір динамічних бібліотек, драйверів пристроїв і конфігураційних файлів. Зазвичай інсталяційний файл DirectX постачається з іграми, а так само його можна знайти на дисках з драйверами.

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

Коли ми будимо писати код для події «при натисканні на клавішу вперед» нам буде потрібно задіяти бібліотеку, яка відповідає за клавіатуру. У DirectX SDK є компонент DirectInput, який якраз вирішить нашу задачу. Так само DirectX містить всі, необхідні для створення гри, набори компонентів. Використання набору компонентів бібліотеки DirectX сильно спрощує процес програмування ігор для Windows. Вам не доведеться писати тисячі сторінок коду для обробки подій клавіатури або іншого пристрою введення, так само в DirectX SDK є набори бібліотек для роботи з мережею, з медіа-файлами і з виведенням зображення на монітор. Хоча DirectX SDK не є ігровим движком, він спрощує сам процес створення ігор. А ігрові движки - за великим рахунком, є надбудовами графічних бібліотек DirectX і OpenGL. Але навіть ігровий движок на DirectX простіше написати, ніж ігровий движок на OpenGL, так як OpenGL включає в себе виключно бібліотеки для роботи з графікою і для повноцінного ігрового движка доведеться писати самому або інтегрувати сторонні бібліотеки. У той час, як в DirectX є все, а зараз ми розглянемо що саме.

З яких бібліотек складається DirectX SDK:

1. DirectXGraphics, набір інтерфейсів для роботи з графічною частиною гри. До версії 8. 0 DirectX Graphics ділився на:

1. 1. DirectDraw: інтерфейс виведення растрової графіки (його розробка давно припинена) .

1. 2. Direct3D (D3D): інтерфейс виведення тривимірних примітивів.

2. DirectInput: інтерфейс, для обробки подій, пов’язаних з використанням джойстика, клавіатури, миші, та інших ігрових контроллеров.

3. DirectPlay: інтерфейс мережевої комунікації ігор, містить засоби для створення мережевих пріложеній.

4. DirectSound: інтерфейс низькорівневої роботи зі звуком (формату Wave)

5. DirectSound, DirectMusic і DirectX Media Objects (ці компоненти у версії 9. 0 об'єднані під назвою DirectX Audio): надають засоби програмування звуку і MIDI-музики.

6. DirectShow: інтерфейс, використовуваний для введення, виводу аудіо та відео даних. Містить засоби для захоплення і відтворення мультимедійних потоків. Починаючи з версії 9.0, вперше з’явився набір бібліотек, що спрощують створення програм для нелінійного монтажу або програвачів аудіо і відео з застосуванням real-time ефектів і красивих переходів між роликами - це DES, розшифровується як DirectShow Editing Services.

7. DirectX Instruments - технологія, що дозволяє на основі мультимедійного API DirectX створювати і використовувати програмні синтезатори. На відміну від DX-плагінів, такі програми можуть повністю управлятися по MIDI і служать головним чином не для обробки, а для синтезу звуку. Технологія DXi була популярна в 2001-2004 рр. , Особливо в програмних продуктах Cakewalk, але з часом програла «війну форматів» технології VST від Steinberg.

8. DirectSetup: частина, відповідальна за установку DirectX. Дозволяє налаштовувати установку DirectX на системах користувачів.

9. DirectX Media Objects: реалізує, функціональну підтримку потокових об’єктів наприклад: ( кодувальники, декодувальник)

10. DirectX Sample Browser: оболонка з дружнім інтерфейсом, що містить приклади і матеріали для Ваших бібліотек DirectX SDK.

11. Direct2D: інтерфейс виведення двовимірної графіки

12. DirectX Diagnostics: (dxdiag) програмний інтерфейс для діагностики драйверів і пристроїв.

Ось що входить до складу пакету DirectX SDK:

1. Набір заголовних файлів і бібліотек для компіляторів C + + .

2. Велика кількість документації по роботі з бібліотекою DirectX у форматі Compiled HTML Help.

3. Складання Managed DirectX для використання з NET-компіляторами.

4. Набір прикладів і покрокових інструкцій в оболонці Sample Browser, яка має простий інтерфейс і сортування матеріалів по категоріях і мовах розробки.

5. "Майстри" (AppWizard) для створення стартових програм в середовищах Visual С + +, Visual C # і Visual Basic. NET.

6. Допоміжні утиліти для редагування файлів DirectX, перегляду системних параметрів і спостереження за системою.

7. І саме середовище виконання - пакет DirectX Runtime, представлений у двох версіях: налаштування - Debug і остаточною - Retail. Отладочная версія значно повільніша, але містить додаткові перевірки, що дозволяють виявити помилки на етапі розробки. Між цими версіями можна легко переключитися.

      1. Open GL

OpenGL (Open Graphics Library - відкрита графічна бібліотека) - специфікація, що визначає незалежний від мови програмування крос-платформний програмний інтерфейс для написання додатків, що використовують двовимірну і тривимірну комп'ютерну графіку. Включає більше 250-ти функцій для малювання складних тривимірних сцен з простих примітивів. Використовується при створенні відеоігор, САПР, віртуальної реальності, візуалізації в наукових дослідженнях. Під Windows конкурує з DirectX.

Специфікація. На базовому рівні, OpenGL - це просто специфікація, тобто документ, що описує набір функцій і їх точну поведінку. Виробники обладнання на основі цієї специфікації створюють реалізації - бібліотеки функцій, які відповідають набору функцій специфікації. Реалізація використовує можливості обладнання, там де це можливо. Якщо апаратура не дозволяє реалізувати будь-яку можливість, вона повинна бути емулювати програмно. Виробники повинні пройти специфічні тести (conformance tests - тести на відповідність) перш ніж реалізація буде класифікована як OpenGL реалізація. Таким чином, розробникам програмного забезпечення досить навчитися використовувати функції, описані в специфікації, залишивши ефективну реалізацію останніх розробникам апаратного забезпечення. Ефективні реалізації OpenGL існують для Windows, Unix платформ, Play Station 3 і Mac OS. Ці реалізації звичайно надаються виробниками відеоадаптерів і активно використовують можливості останніх. Існують також суто програмні реалізації специфікації OpenGL, однією з яких є бібліотека Mesa. Специфікація OpenGL переглядається Консорціумом ARB (Architecture Review Board), який був сформований в 1992 році. Консорціум складається з компаній, зацікавлених у створенні широко поширеного і доступного API. Згідно з офіційним сайтом OpenGL, членами ARB з вирішальним голосом на листопад 2004 року є виробники професійних графічних апаратних засобів SGI, 3Dlabs, Matrox і Evans & Sutherland (військові програми), виробники споживчих графічних апаратних засобів ATI і NVIDIA, виробник процесорів Intel, і виробники комп'ютерів та комп'ютерного обладнання IBM, Apple, Dell, Hewlett-Packard і Sun Microsystems, а також один з лідерів комп'ютерної ігрової індустрії id Software. Microsoft, один з основоположників Консорціуму, покинула його в березні 2003 року. Крім постійних членів, щороку запрошується велика кількість інших компаній, що стають частиною OpenGL ARB протягом одного року. Така велика кількість компаній, залучених до різноманітне коло інтересів, дозволило OpenGL стати прикладним інтерфейсом широкого призначення з великою кількістю можливостей.

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

Архітектура. OpenGL орієнтується на наступні два завдання:

приховати складності адаптації різних 3D-прискорювачів надаючи розробнику єдиний API приховати відмінності в можливостях апаратних платформ.

Основним принципом роботи Open GL є отримання наборів векторних графічних примітивів у вигляді крапок, ліній і багатокутників з наступною математичною обробкою отриманих даних і побудовою растрової картинки на екрані або в пам'яті. Векторні трансформації і растеризація виконуються графічним конвертером (graphics pipeline), який по суті являє собою дискретний автомат. Абсолютна більшість команд OpenGL потрапляють в одну з двох груп: або вони додають графічні примітиви на вхід в конвертер, або конфігурують конвертер на різне виконання трансформації.

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

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

Додаткові бібліотеки. Існує ряд бібліотек, створених поверх або на додаток до OpenGL. Наприклад, бібліотека GLU, що є практично стандартним доповненням OpenGL і завжди її супроводжує, побудована поверх останньої, тобто використовує її функції для реалізації своїх можливостей. Інші бібліотеки, як наприклад GLUT і SDL, створені для реалізації можливостей, недоступних в OpenGL. До таких можливостей відносяться створення інтерфейсу користувача (вікна, кнопки, меню тощо), настройка контексту малювання (область малювання, що використовується OpenGL), обробка повідомлень від пристроїв введення, виводу (клавіатура, миша та ін), а також робота з файлами. Зазвичай, кожен віконний менеджер має власну бібліотеку-розширення для реалізації вищеописаних можливостей, наприклад, WGL в Windows або GLX в X Window System, однак бібліотеки GLUT і SDL є крос-платформеними, що полегшує перенесення написаних додатків на інші платформи.

Бібліотеки такі як GLEW і GLEE створені для полегшення роботи з розширеннями і різними версіями OpenGL. Це особливо актуально для програмістів в Windows, так як, заголовні і бібліотечні файли, що поставляються з Visual Studio, знаходяться на рівні версії OpenGL 1.1. OpenGL має тільки набір геометричних примітивів (точки, лінії, багатокутники) з яких створюються всі тривимірні об'єкти. Часом подібний рівень деталізації не завжди зручний при створенні сцен. Тому поверх OpenGL були створені більш високо-рівневі бібліотеки, такі як Open Inventor і VTK. Дані бібліотеки дозволяють оперувати більш складними тривимірними об'єктами, що полегшує і прискорює створення тривимірної сцени.

Незалежність від мови програмування. Для підтвердження незалежності від мови програмування були розроблені різні варіанти прив'язки (binding) функцій OpenGL або повністю перенесені на інші мови. Одним із прикладів може служити бібліотека Java 3D, яка може використовувати апаратне прискорення OpenGL. Пряма прив'язка функцій реалізована в Lightweight Java Game Library, яка має пряму прив'язку OpenGL для Java. Sun також випустила версію JOGL, яка надає пряму прив'язку до C-функцій OpenGL, на відміну від Java 3D, яка не має настільки низькорівневої підтримки. Офіційний сайт OpenGL має посилання на прив'язки для мов Java, Fortran 90, Perl, Pike, Python, Ada і Visual Basic. Є також варіанти прив'язки OpenGL для мов C + + і C.

OpenGL 2.0 У порівнянні з DirectX, говорили що головною проблемою OpenGL є Консоціум, до якого входить велика кількість компаній з різними інтересами, що призводить до тривалого періоду прийняття нової версії специфікації. OpenGL 2.0 була представлена ​​3Dlabs у відповідь на занепокоєння щодо повільного розвитку та нечіткого напрями OpenGL. 3Dlabs запропонувала ряд істотних доповнень до стандарту, найвагомішим з якого був GLSL (OpenGL Shading Language). Це дозволяє програмісту замінити фіксований конвертер OpenGL невеликими програмами на спеціальній мові, GLSL, для створення таких ефектів, як «рельєфні текстури» («bump mapping»), хвилі і водна бризи. Фінальна версія специфікації OpenGL 2.0 включає в себе підтримку GLSL. Проте, ще до введення в стандарт OpenGL мови GLSL існувала можливість розробляти спецефекти на мовах: assembler (розширення vertex_program, fragment_program) і Cg (NVidia C for Graphics). На жаль багато запропоновані можливості поки що немає у версії OpenGL 2.0, хоча деякі з них реалізовані багатьма виробниками у вигляді розширень.