Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КГ Лаб 02 Побудова дротяних зображень.doc
Скачиваний:
5
Добавлен:
14.02.2015
Размер:
227.33 Кб
Скачать

Модель кольору бібліотеки Open gl

При формуванні зображень в бібліотеці Open GL застосовується адитивна RGB-модель кольору. В такій моделі колір формується шляхом змішування променів червоного, зеленого та блакитного кольорів різної інтенсивності. Таким чином, для визначення певного кольору слід вказати інтенсивність його складових. Для встановлення кольору фону в Open GL використовується процедура

glClearColor(R,G,B,Alfa);

де R, G, B – інтенсивності основних кольорів (червоного, зеленого та блакитного відповідно) заданих дійсними числами з діапазону , Alpha – параметр прозорості. Наприклад,

glClearColor(1,0,0,1), // червоний колір

glClearColor(1,1,1,1) // білий колір

glClearColor(0,0,0,1) // чорний колір

glClearColor(0.7,0.7,0.7,1) // сірий колір

Після виконання процедури glClearColor фактичний колір фону форми не змінюється, змін зазнає лише внутрішня змінна Open GL-контексту, що зберігає поточне значення кольору фону. Для зафарбовування форми необхідно виконати процедуру:

glClear(GL_COLOR_BUFFER_BIT);

де параметр GL_COLOR_BUFFER_BIT – системна стала, що визначена в модулі OpenGL, яка зберігає поточне значення кольору фону.

Колір переднього плану (колір фігури) визначається процедурами:

glColor3d(R,G,B); // для параметрів типа double

glColor3f(R,G,B); // для параметрів типа float(single)

glColor3i(R,G,B); // для параметрів типа integer

Тут параметри R, G, B мають зміст, аналогічний до попереднього випадку, алевідрізняються за типом.

Таким чином фрагмент програми:

glClearColor(0.2,0.5,0.75,1.0); // Встановлення кольору фону

glClear(GL_COLOR_BUFFER_BIT); // Очистка вікна

glColor3d(1,1,1); // Встановлення кольору майбутніх зображень

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

Система координат в бібліотеці Open gl

При виведенні зображень засобами Open GL застосовується прив’язана довікна система координат (рис. 2.1). По замовчанню початок координатзнаходиться в центрі вікна, вісь абсцис ОХ – горизонтальна направлена доправого краю екрану, вісь ординат OY – вертикальна і направлена до верхньогокраю екрана, вісь аплікат OZ є перпендикулярною до площини екрана інаправлена від користувача. Вся видима область має вигляд куба, з початкомкоординат в центрі та довжиною ребер 2 одиниці. Зверніть увагу, що дляформування фігур застосовуються координати, незалежні від розміру абоположення вікна на екрані. Таким чином, при масштабуванні або зсуві вікнафігура буде масштабуватися та зсовуватися разом з вікном.

Вікно форми

Рис. 2.1. Система координат Open GL

Графічні примітиви бібліотеки Open gl

При побудові векторних зображень здійснюється їх декомпозиція на графічні примітиви (точки, лінії, багатокутники). В бібліотеці Open GL всі графічні примітиви задаються сукупністю їх вершин (точок) стандартним способом. Спочатку виконується процедура glBegin(ВидПримітиву), яка встановлює початок введення примітиву, визначеного параметром ВидПримітиву. Потім до примітиву додаються вершини шляхом виконання процедур glVertex2d(x,y), glVertex2f(x,y), glVertex2s(x,y), glVertex2i(x,y) та glVertex3d(x,y,z), glVertex3f(x,y,z), glVertex3s(x,y,z), glVertex3i(x,y,z). При цьому двійка в імені процедури означає застосування двовимірних координат (примітив зображується в площині OXY), а трійка – тривимірних. Остання літера в імені процедури визначає тип змінних, якими задаються координати точки: d – double, f – float (single), s – shortint, i – integer тощо.

Після того як процедурами glVertex задано всі точки примітиву слід виконати процедуру glEnd, що показує завершення вводу примітиву.

Під час виклику процедури glBegin(ГрафічнийПримітив) параметр ГрафічнийПримітив може набувати одного з наступних значень:

GL_POINTS – точки,

GL_LINES – лінії;

GL_LINE_STRIP – ламана лінія;

GL_LINE_LOOP – замкнена ламана лінія;

GL_TRIANGLES – зафарбовані трикутники;

GL_TRIANGLE_STRIP – зафарбовані трикутники, зчеплені сторонами;

GL_TRIANGLE_FAN – зафарбовані трикутники з загальною вершиною;

GL_QUADS – зафарбовані чотирикутники;

GL_QUAD_STRIP – зчеплені сторонами чотирикутники;

GL_POLYGON – багатокутники.

Розглянемо кожен з примітивів більш детально.

Група примітивів GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP застосовується для побудови так званих дротяних зображень. Такі зображення містять лише точки та лінії різної товщини і не містять непрозорих поверхонь.

Для побудови зображень з непрозорими зафарбованими поверхнями застосовується група примітивів GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS, GL_QUAD_STRIP, GL_POLYGON. Застосування останньої групи примітивів буде розглянуто далі. Більш детально застосування першої групи примітивів наводиться нижче.