49638 (Графічна бібліотека OpenGl)

2016-07-29СтудИзба

Описание файла

Документ из архива "Графічна бібліотека OpenGl", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "контрольные работы и аттестации", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "49638"

Текст из документа "49638"

МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ

Бердичівський політехнічний коледж

Контрольна робота

з предмета “Комп’ютерна графіка”

(варіант №12)

Виконав:

студент групи Пзс-504

Побережний Д.В..

Перевірив

викладач:

Козік В.Ю.

м. Бердичів

2007 р.

1. Крива Без'є

Цей алгоритм дозволяє обчислити координати (х, у) точки кривої Без'є за значенням параметра t.

1. Кожна сторона контуру багатокутника, що проходить по точках-орієнтирах, ділиться пропорційно значенню t.

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

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

Наведемо запис геометричного алгоритму на мові C++:

Результат роботи алгоритму — координати однієї точки кривої Без'є — записуються в R[0].

Фігурою тут будемо вважати плаский геометричний об'єкт, який складається з ліній контуру та точок, що містяться всередині контуру. Контурів може бути декілька — наприклад, коли об'єкт має всередині порожнини (рис. 3.10). У деяких графічних системах одним об'єктом може вважатися й більш складна багатоконтурна фігура — сукупність островів із порожнинами.

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

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

2. Графічна бібліотека OpenGl

OpenGL — це "програмний інтерфейс для апаратури, яка створює графіку" [88]. Цей інтерфейс зроблений у вигляді бібліотеки функцій (Open Graphic Library — OpenGL). Розробник — фірма Silicon Graphics.

OpenGL стала індустріальним стандартом, вона підтримується багатьма операційними системами для різноманітних апаратних платформ — від персональних комп'ютерів до надпотужних суперкомп'ютерів. Бібліотека OpenGL дозволяє досить просто створювати швидкодіючі графічні програми, які використовують апаратні можливості ЗD-акселераторів. Тому вона часто використовується розроблювачами комп'ютерних ігор (наприклад, Quake) та систем тривимірного моделювання. В операційній системі Windows бібліотека OpenGL (версії 1.1) підтримана, починаючи з Windows 95 версії OSR 2, — були додані відповідні модулі DLL, а також включені кілька функцій і структур даних у АРІ Win32.

Перша версія OpenGL побачила світ у 1992 році. Розширення OpenGL втілювалися у версіях 1.1-1.5. Зараз на порядку денному впровадження OpenGL версії 2. Ця версія буде забезпечувати використання усіх можливостей графічних процесорів, у тому числі повну підтримку шейдерів.

Розробка графічних програм OpenGL для середовища Windows подібна програмуванню графіки GDI функцій АРІ, що ми розглянули в главах 7-10. Однак є особливості, деякі з яких ми вивчимо. Для одержання докладніших відомостей можна порекомендувати такі літературні джерела, як довідники для систем програмування для АРІ Win32 [86, 87].

Стосовно літератури. Незважаючи на те, що видано багато різноманітної літератури з OpenGL, в тому числі й кирилицею, радимо вам завжди намагатися читати першоджерела (це стосується будь-якої теми). Для OpenGL таким джерелом є знаменита "Red Book" від Silicon Graphics.

Швидкодія графічних програм, що використовують OpenGL, істотно залежить від відеоадаптера. Апаратна реалізація всіх базових функцій OpenGL — гарантія високої швидкодії. У даний час багато відеоадаптерів містять спеціальний графічний процесор (один чи декілька) для підтримки функції графіки. Крім того, що відеоадаптер повинен апаратно виконувати усі базові функції OpenGL (такі як перетворення координат, відсікання, вивід полігонів, розрахунок освітлення, накладення текстур), для досягнення високої швидкодії повинен бути встановлений спеціальний драйвер. Драйвери типу ICD (Installable Client Driver) забезпечують інтерфейс, що сприяє ефективному використанню апаратних можливостей відеоадаптера. Інший тип драйвера — MCD — встановлюється зазвичай тоді, коли не всі функції підтримані апаратно, в цьому випадку вони виконуються програмно центральним процесором, що істотно повільніше.

Розглянемо створення програм OpenGL мовою С, C++ у середовищі Windows. У главі 7 при розгляді графіки GDI ми визначили ключовий момент — це створення контексту графічного пристрою (device context). Графіка OpenGL у цьому плані схожа — необхідно спочатку створити контекст, що названий тут контекстом відображення {rendering context), і спрямовувати поточний вивід графіки на нього. Потім необхідно закрити цей контекст, звільнити пам'ять.

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

Дамо загальну схему програми OpenGL.

1. Створення вікна програми. Тут необхідно обов'язково установити стиль вікна ws_clipchildren і ws_clipsiblings. Це здійснюється завданням значень аргументів функції CreateWindow.

2. Після створення вікна можна відкривати контекст відображення. Рекомендується відкриття цього контексту робити під час обробки повідомлення wm_create.

3. Щоб створити контекст відображення, спочатку необхідно відкрити контекст вікна (hdc), наприклад, функцією GetDC.

4. Для з'ясування характеристик контексту відображення встановлюємо відповідні значення полів структури PIXELFORMATDESCRIPTOR і викликаємо функцію ChoosePixelFormat. Ця функція повертає номер піксельного формату, який можна використовувати. Якщо це — номер 0, то створення потрібного контексту відображення неможливо.

5. Викликом функції SetPixelFormat задаємо відповідний піксельний формат у контексті hdc.

6. На основі контексту hdc створюємо контекст відображення hglrc викликом функції wglCreateContext. Для переадресації поточного виводу графіки OpenGL у hglrc необхідно викликати функцію wglMakeCurrent.

7. У ході роботи програми виводимо графічні об'єкти в поточний контекст відображення. Графічний вивід можна здійснювати під час обробки повідомлення wm_paint чи інших повідомлень. Для цього використовуються функції для роботи з графічними примітивами OpenGL.

8. Перед закриттям вікна програми необхідно закрити всі відкриті контексти відображення. Також необхідно закрити всі контексти графічного пристрою. Це можна зробити в ході обробки повідомлення WM_DESTROY ВИКЛИКОМ функцій ReleaseDC І wglDeleteContext.

Щоб використовувати бібліотеку OpenGL, у середовищі розробки програм на С та C++ необхідно підключити відповідні файли заголовків.

Список використаної літератури:

1. С.В. Глушаков, Г.А. Крабе Компютерная графика, Харьков 2002

2. Блінова Т.О., Порєв В.М. Комп’ютерна графіка / За ред. В.М.Горєва. – К.: Видавництво “Юніор”, 2004.

3. OpenGl, технология ставшая символов, Учебник в примерах.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5173
Авторов
на СтудИзбе
436
Средний доход
с одного платного файла
Обучение Подробнее