Курсовая работа: Використання OpenGL. Моделювання вогню

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

У 1992 році компанія SGI очолила OpenGL ARB — групу компаній по розробці специфікації OpenGL. OpenGL еволюціонував з 3D-інтерфейса SGI — IRIS GL. Одним з обмежень IRIS GL було те, що він дозволяв використовувати тільки можливості, підтримувані устаткуванням; якщо можливість не була реалізована апаратно, застосування не могло її використовувати. OpenGL долає цю проблему за рахунок програмної реалізації можливостей, що не надаються апаратно і дозволяє використовувати цей інтерфейс на відносно малопотужних системах.

У 1995 році була випущена бібліотека Direct3D від Microsoft. Незабаром Microsoft, SGI і Hewlett - Packard почали проект під назвою Fahrenheit, який передбачав створення більше універсального програмного інтерфейсу на основі Direct3D і OpenGL. Ідея здавалася багатообіцяючою, покликаною навести лад в області інтерактивної тривимірної графіки, проте, в результаті фінансових труднощів в SGI і відсутності належної індустріальної підтримки, проект був закритий. Правда, пізніше, 16 вересня 2005 року, він все-таки був випущений.

OpenGL орієнтується на наступні два завдання:

· Приховати складнощі адаптації різних 3D-прискорювачів, надаючи розробникові єдиний API.

· Приховати відмінності в можливостях апаратних платформ, вимагаючи реалізації бракуючої функціональності за допомогою програмної емуляції.

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

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

Метою цієї роботи є вивчити особливості роботи з відкритою графічною бібліотекою OpenGL та навчитися її застосовувати в комп’ютерному моделюванні.

Завдання полягає у написанні програми моделювання горіння вогню з використанням графічної бібліотеки OpenGL.

Предметом дослідження є комп’ютерна графіка, а об’єктом дослідження побудова графічних зображень з використанням відкритої графічної бібліотеки OpenGL.

РОЗДІЛ 1 . Програмний код та синтаксис команд OpenGL

1.1 Програмний код OpenGL

Оскільки за допомогою графічної системи OpenGL можна вирішити так багато завдань, OpenGL-програма може бути досить важкою для розуміння. Проте основна структура програми може бути проста: її завдання полягають в тому, щоб ініціалізувати деякі стани, які управляють тим, як бібліотека OpenGL виконує візуалізацію, і визначити об'єкти, які будуть візуалізовані.

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

Кінцеве візуалізоване зображення складається з пікселів, що виводяться на екран; піксель є найменшим видимим елементом, який апаратні засоби відображення можуть помістити на екран.

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

Приклад 1. Фрагмент програмного коду OpenGL

finclude <whateverYouNeed.h>,

main () {

InitializeAWindowPlease();

glClearColor(0.0, 0.0, 0.0, 0.0); glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 1.0, 1.0);

glOrtho(0.0, 1.0, 0.0, 1.0, - 1.0, 1.0); glBegin(GL_POLYGON);

glVertex3f(0.25, 0.25, 0.0);

glVertex3f (0.75, 0.25, 0.0);

glVertex3f(0.75, 0.75, 0.0);

glVertex3f(0.25, 0.75, 0.0); glEnd() ; glFlush () ;

UpdateTheWindowAndCheckForEvents(); }

Перший рядок функції main() ініціалізував певне вікно на екрані: функція InitializeAWindowPlease() використовується в даному випадку в якості мітки-"заповнювача" для підпрограм специфічних віконних систем, які в загальному випадку не є викликами OpenGL. Наступні два рядки містять команди OpenGL, які встановлюють чорний колір фону для вікна: функція glCIearCoIor() визначає, який колір фону буде встановлений для вікна, а функція glClear() фактично встановлює колір вікна. Як тільки колір фону встановлений, вікно заливається цим кольором всякий раз, коли викликається функція glClear(). Цей колір фону може бути змінений за допомогою другого виклику функції glClearColor(). Так само функція glColor3f() встановлює, який колір слід використовувати для промальовування об'єктів на екрані - в даному випадку цей колір є білим. Усі об'єкти, що виводяться на екран після цього моменту, використовують цей колір до тих пір, поки він не буде змінений за допомогою наступного виклику команди установки кольору.

К-во Просмотров: 232
Бесплатно скачать Курсовая работа: Використання OpenGL. Моделювання вогню