|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Необхідні теоретичні відомостіМЕТОДИЧНІ ВКАЗІВКИ з курсу «Програмування комп’ютерної графіки»
До ЛАБОРАТОРНОЇ РОБОТИ № 2
«Примітиви OPENGL|, основні прийоми побудови|шикування| двовимірних об'єктів»
| для студентів спеціальностей 7.160104 «Адміністративний менеджмент у сфері захисту інформації» 7.160105 «Захист інформації в комп’ютерних системах і мережах»
Львів - 2013 УДК 681.3.06 (075)
Лабораторна робота № 2. Примітиви OPENGL|, основні прийоми побудови|шикування| двовимірних об'єктів. Мета|ціль| роботи. Знайомство з|із| примітивами OPENGL|, призначеними для виведення крапок|точок|, ліній і багатокутників. Визначення кольору|цвіту| об'єктів. Різні способи замальовування|зафарбовувати| об'єктів. Необхідні теоретичні відомості. Для виконання роботи необхідно мати уявлення про основні принципи формування зображення на екрані, про моделювання об'єктів на плоскості|площині|; знати особливості представлення кольору|цвіту| в колірній моделі RGB|; розуміти сенс|зміст| терміну «антиелайзінг|». Область виводу|висновку| в OPENGL| задається командою glViewPort|(0, 0, ClientWidth|, ClientHeight|) де перші два параметри задають положення лівого верхнього кута вікна виводу, параметри ClientWidth, ClientHeight визначають розмір вікна в екранних координатах. Центр отриманої області виводу має координати (0, 0). Координати змінюються в діапазоні [-1; 1] по кожній осі. Якщо при установці формату піксела був встановлений режим подвійної буферизації (прапор PFD_DOUBLEBUFFER), то зображення готується у позаекранному буфері, і необхідно забезпечити перезапис вмісту позаекранного буфера в основний. Зробити це можна командою BOOL| SwapBuffers|(HDC| hdc|); Всі зображення будуються з окремих примітивів, які описуються за допомогою набору вершин (Vertex). Примітивами OpenGl є крапки (одиночні вершини), лінії (пари вершин), трикутники (три вершини), чотирикутники (чотири вершини) і полігони (3 і більш за вершини). Командні дужки. Використання функцій glBegin| і glEnd|. Команди малювання полягають між командними дужками glBegin і glEnd. Командними дужками бібліотеки OpenGl є спеціальні функції (що не мають ніякого відношення до операторних дужок мов програмування). Помилка при використанні командних дужок не розпізнається компілятором, але може привести до непередбачуваних результатів роботи програми. Усередині командних дужок можуть знаходитися будь-які оператори мови і багато функцій OPENGL. Головне призначення командних дужок – завдання режиму (примітиву) для команд glVertex (вершина), що визначають координати вершин для малювання примітивів OPENGL. Команди, що встановлюють розмір крапки|точки|, товщину і типа|тип| лінії, включення|приєднання| і відключення режиму згладжування (антиелайзінг|) повинні стояти поза|зовні| командними дужками. Колір|цвіт| окремих вершин або примітивів може встановлюватися як поза|зовні| командними дужками, так і усередині|всередині| них. Для установки кольору|цвіту| використовується команда glColor3f|(0.3f, 0.5f, 0.1f) де колір|цвіт| формується як сума компонент червоного, зеленого і синього кольорів|цвіту| у вказаній пропорції. Значення компонент задаються у вигляді дійсних чисел в інтервалі [0; 1]. Компоненти кольору|цвіту| можуть бути задані і в цілочисельній формі, граничним значенням в цьому випадку буде|з'являтиметься| максимальне 8-бітове ціле без знаку, наприклад, білий колір|цвіт| буде записаний таким чином: glColor3i|(214748647, 214748647, 214748647). Проте|однак| переважно використовувати команду в речовій формі, оскільки OPENGL| зберігає дані саме в речовому форматі. Цифра 3 в назві команди означає число аргументів команди. Аргументи функції glBegin|. Аргументами функції glBegin можуть бути стандартні константи OpenGl, що визначають примітиви бібліотеки: 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. У програмі імена констант мають бути записані саме так як це зроблено тут (все у верхньому регістрі). Включення|приєднання| і відключення режиму згладжування (антиелайзінг|). Для установки режиму згладжування перед командними дужками повинна стояти команда glEnable() з відповідною константою як аргумент, а після командних дужок – команда glDisable() також з відповідною константою. Вибір константи визначається примітивом, згладжування якого має бути включене (або відключено): GL_POINT_SMOOTH (згладжування для крапок), GL_LINE_SMOOTH (згладжування ліній), GL_POLYGON_SMOOTH (згладжування для полігонів). Виведення крапок|точок| в OPENGL|. Розгледимо малювання крапок. Крапками є одиночні вершини. Для малювання вершини використовується команда glVertex. Якщо крапка має бути змальована на плоскості, то для визначення її положення необхідно дві координати. В цьому випадку використовується функція з двома аргументами: glVertex2f(0, 0). Буква f в назві функції визначає типа аргументів – дійсні числа (float). Крапка в просторі визначається трьома координатами, отже повинна використовуватися команда з трьома аргументами: glVertex3f(0.5, 0.3,-0.7). Команди glVertex повинні розміщуватися між командними дужками. При цьому кількість крапок може бути будь-яким. Аргументом функції glBegin для малювання крапок є константа GL_POINTS. Аргументом команд glEnable() і glDisable() для включення/відключення режиму згладжування є константа GL_POINT_SMOOTH. Для завдання розміру крапки використовується команда glPointSize(). Аргументом є натуральне число, що визначає розмір крапки в пікселах. У режимі згладжування існує обмеження на розмір крапок. Визначите експериментально максимальний розмір крапки, що виводиться в режимі згладжування. Приклад|зразок|: glColor3f|(1.0, 0.0, 0.0); // Встановили червоний колір|цвіт| glEnable|(GL_POINT_SMOOTH|); // Включення|приєднання| режиму згладжування для // крапок|точок| glPointSize|(3); // Встановили розмір крапки|точки| 3 піксели glBegin|(GL_POINTS|); // Режим малювання - крапки|точки| glVertex2f|(-0.5, -0.7); glVertex2f|(0.0, 0.0); glVertex2f|(0.1, 0.9); glVertex2f|(0.3, -0.5); glEnd|(); // Кінець малювання glDisable|(GL_POINT_SMOOTH|); // Відключення режиму згладжування для // крапок|точок| Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |