Контрольная работа: Методи поліпшення растрових зображень

Куб малюється навколо ока спостерігача і проектується на площину екрану. Згідно установкам цієї команди передня і задня частини нашого куба частково обрізаються. Наступна команда, яку ми розглянемо, мабуть, найбільш популярна в плані використання для первинного завдання видових параметрів. Команда gluPerspective, як ясно з її назви, також знаходиться в бібліотеці glu. Проект прикладу міститься в підкаталозі Ех09, а отримується в результаті роботи програми картинка показана на мал.1.

мал.1

У них можна міняти значення всіх аргументів команди gluLookAt, і оскільки цих аргументів порівняно багато, я створив допоміжну форму, в полях редагування якої виводяться і задаються користувачем координати всіх дев'яти аргументів Рекомендую обов'язково попрактикувати з цим прикладом, щоб "відчути" роботу параметрів Звернете увагу, що, як підкреслюється в документації, вектор "up" не повинен бути паралельним лінії, що сполучає точку зору і контрольну крапку.

Буфер глибини

При створенні контексту відтворення до числа параметрів формату пікселів входять розміри розділів пам'яті, що надається для потреб OpenGL, або буферів. Крім буферів кадру, в OpenGL присутні ще три буфери: буфер глибини, буфер трафарету і допоміжний буфер. Для спеціальних потреб можуть використовуватися ще буфер вибору і буфер зворотного зв'язку, вони готуються користувачем у міру потреби. Як ясно з його назви, він використовується для передачі простору При відтворенні кожного піксела в цей буфер записується інформація про значення координати Z піксела, так звана віконна Z. Якщо на піксел доводиться декілька крапок, на екран виводиться крапка з найменшим значенням цієї координати. При просторових побудовах відмова від використання буфера глибини приводить до невірної передачі простору. З буфером глибини пов'язані дві команди: glDepthFunc І glDepthRange. Хоч вони застосовуються досить рідко, уявлення про них мати не перешкодить. Перша з цих команд задає правило, по якому відбувається порівняння значення віконного Z перед виведенням піксела. За умовчанням встановлено значення GL_LESS - виводити на екран крапки з мінімальним значенням віконної Z. Решта значень призводить найчастіше до того, що взагалі нічого не буде виведено. Друга команда задає розподіл віконної координати Z при перекладі з нормалізованих координат у віконні.

Джерело світла

Попередні приклади навряд чи можуть задовольнити кого-небудь через свою невиразність. Мальований кубик швидше вгадується, всі грані покриті монотонним кольором, за яким втрачається простір. Щоб збільшити реалізм одержуваних побудов. Ось в наступному прикладі кубик малюється реалістичніше - мал. 2.

Мал. 2

При створенні вікна включається джерело світла:

glEnable (GL_LIGHTING); // вирішуємо роботу з освітленістю

glEnable(GL_LIGHTO); // включаємо джерело світла

Це мінімальні дії для включення джерела світла. Тепер в сцені присутнє одне джерело світла з ім'ям 0. При необхідності можна "встановити" декілька джерел, для цього так само використовується команда glEnable, наприклад:

glEnable (GL_LIGHT1); // включаємо джерело світла 1

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

glBegin (GL_QUADS);

glNormal3f(0. 0, 0. 0, 1. 0);\

glVertex3f(1. 0, 1. 0, 1. 0);\

glVertex3f(-1. 0, 1. 0, 1. 0);\

glVertex3f(-1. 0 -1. 0, 1. 0);\

glVertex3f(1. 0 -1. 0, 1. 0); \

glEnd;\

glBegin(GL_QUADS); \

glNormal3f(-1. 0, 0. 0, 0. 0);\

glVertex3f(-1. 0, 1. 0, 1. 0);\

glVertex3f(-1. 0, 1. 0 -1. 0);

glVertex3f{-1. 0 -1. 0 -1. 0)

glVertex3f(-1. 0-1. 0,1. 0);

К-во Просмотров: 383
Бесплатно скачать Контрольная работа: Методи поліпшення растрових зображень