Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка OpenGL.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
504.83 Кб
Скачать

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

КРЕМЕНЧУЦЬКИЙ ДЕРЖАВНИЙ ПОЛІТЕХНІЧНИЙ УНІВЕРСИТЕТ

ІМЕНІ МИХАЙЛА ОСТРОГРАДСЬКОГО

МЕТОДИЧНІ ВКАЗІВКИ

ЩОДО ВИКОНАННЯ ЛАБОРАТОРНИХ РОБІТ

З НАВЧАЛЬНОЇ ДИСЦИПЛІНИ

«ОБЧИСЛЮВАЛЬНА ГЕОМЕТРІЯ ТА КОМП’ЮТЕРНА ГРАФІКА»

ДЛЯ СТУДЕНТІВ ДЕННОЇ ТА ЗАОЧНОЇ ФОРМ НАВЧАННЯ ЗІ

СПЕЦІАЛЬНОСТІ

6.080200 – «Інформатика»

(У ТОМУ ЧИСЛІ СКОРОЧЕНИЙ ТЕРМІН НАВЧАННЯ)

КРЕМЕНЧУК 2009

Методичні вказівки щодо виконання лабораторних робіт з навчальної дисципліни «Обчислювальна геометрія та комп’ютерна графіка» для студентів денної та заочної форм навчання зі спеціальності 6.080200 – «Інформатика» (у тому числі скорочений термін навчання)

Укладач асист. Т.А.Григорова

Рецензент к. т. н., Г.В. Славко

Кафедра інформатики і вищої математики

Затверджено методичною радою КДПУ імені Михайла Остроградського

Протокол №_____ від_________________

Заступник голови методичної ради__________________доц. С.А. Сергієнко

Лабораторна робота № 3

Тема. Функції рисування графічних зображень з використанням різних растрових операцій

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

Короткі теоретичні відомості

OPENGL це оптимізована, високопродуктивна графічна бібліотека функцій і типів даних для відображення дво- і тривимірної графіки. OPENGL підтримують усі платформи і вона апаратно підтримана. Microsoft-реалізація OPENGL включає повний набір команд OPENGL, тобто глобальних функцій, що входять до ядра бібліотеки OPENGL32.LIB і що мають префікс gl (наприклад, glLineWidth). Ядро бібліотеки містить більше 300 команд. Можна підключити бібліотеку утиліт GLU32.LIB, які доповнюють основне ядро. Тут є функції керування текстурами, перетворенням координат, генерацією сфер, циліндрів і дисків, апроксимацій сплайнів кривих і поверхонь (NURBS — Non-Uniform Rational B-Spline), а також обробки помилок. Ще одна, додаткова, (auxiliary) бібліотека GLAUX.LIB дозволяє простим способом створювати Windows-вікна, зображати деякі SD-об’єкти, обробляти події введення і керувати фоновим процесом.

Моделлю або об'єктом в OPENGL називається структура в пам'яті, що конструюється з геометричних примітивів: точок, ліній і полігонів, які, у свою чергу, задаються своїми вершинами (vertices). З цих моделей OPENGL створює зображення в спеціально підготовленому вікні. Процес створення і демонстрації зображення називається передачею (rendering) зображення OPENGL. Кінцевим зображенням є безліч пікселів — найдрібніших видимих елементів екранної поверхні. Інформація про колір пікселів розміщена в пам'яті у вигляді бітових площин (bitplanes). Так називається область пам'яті, яка містить тільки один біт інформації про всі пікселі вікна. У сукупності площини складають буфер кадру (framebuffer), який містить інформацію, необхідну для того, щоб дисплей відобразив усі пікселі вікна OPENGL.

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

Команди OPENGL зазнають однакового порядку обробки, проходячи через послідовність стадій, які називать конвеєром обробки OPENGL (processing or rendering pipeline) (рис. 3.1).

Рис. 3.1 Схема конвеєра OPENGL

Списки команд OPENGL (Display Lists)

Усі дані, що описують геометрію або окремі пікселі, можуть бути збережені в списках команд (display lists) для подальшого використання. Альтернатива — негайне використання (immediate mode). Якщо викликати список командою glCallList, збережені дані зі списку починають рухатися по конвеєру так само, як і в режимі негайного використання.

Дані про пікселі йдуть у конвеєрі OPENGL паралельним шляхом. Дані, що зберігаються в масивах системної пам'яті, розпаковуються з урахуванням набору можливих форматів, потім змінюється масштаб, зсуваються й обробляються так званою картою пікселів (pixel map). Результат записується або в пам'ять текстури, або посилається на наступний етап — растеризацію. Можлива зворотна операція зчитування пікселів. При цьому також виконуються операції: масштабування, зсув, перетворення, стиснення та пререміщення до системної пам'яті. Існують спеціальні операції копіювання даних з буфера кадру (framebuffer) до іншої його частини або до буфера текстури.

Підготовку контексту передачі OPENGL треба виконувати у заданому порядку дій:

  • вибір стилю вікна;

  • обробка повідомлення WM_ERASEBACKGROUND і відмова від стирання фону;

  • вибір pixel-формату;

  • створення контексту пристрою (НІС) і контексту передачі (HGLRC);

  • специфічна обробка повідомлення WM_SIZE;

  • обробка повідомлення WM_PAINT;

  • звільнення контекстів при закритті вікна.

OPENGL використовує свої власні типи даних, які повинні відповідати аналогічним типам тієї платформи, на якій встановлена бібліотека. У Microsoft- реалізації відповідність типів задана у файлі заголовків GL.H так, як показано нижче. Ця таблиця знадобиться при аналізі прикладів та при розробці власного коду:

typedef unsigned int GLenum;

typedef unsigned char GLboolean;

typedef unsigned int GLbitfield;

typedef signed char GLbyte;

typedef short GLshort;

typedef int GLint;

typedef int GLsizei;

typedef unsigned char GLubyte;

typedef unsigned short GLushort;

typedef unsigned int GLuint;

typedef float GLfloat;

typedef float GLclampf;

typedef double GLdouble;

typedef double GLclampd;

typedef void GLvoid;