2.1 Конвеєр візуалізації OpenGL

 

2.1.1 Конвеєр

Більшість реалізацій бібліотеки OpenGL мають однаковий порядок операцій, певну послідовність стадій обробки, яка називається конвеєром візуалізації OpenGL. Цей порядок функціонування не є суворим правилом реалізації бібліотеки OpenGL, проте він є надійним керівництвом для передбачення результату роботи OpenGL.

Рис. 2.1.1. Конвеєр візуалізації

Наступна діаграма демонструє концепцію складального конвеєра Генрі Форда, яку бібліотека OpenGL використовує для обробки даних. Геометричні дані (вершини, прямі і багатокутники) проходять через послідовність блоків, до числа яких входять обчислювачі і операції обробки вершин, тоді як піксельні дані (пікселі, зображення і растрові образи) для певної частини процесу візуалізації обробляються по-іншому. Обидва типи даних піддаються одним і тим же завершальним операціям (операції растеризування і пофрагментной обробки), перш ніж підсумкові піксельні дані записуються у буфер кадру.


2.1.2 Списки виводу

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

 

2.1.3 Обчислювачі

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

 

2.1.4 Операції обробки вершин

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

 

2.1.5 Збірка примітивів

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

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

Результатом виконання цієї стадії є закінчені геометричні примітиви, які є перетвореними і відсіченими вершинами і пов'язаними з ними значеннями кольору, глибини і іноді координатами текстур, а також вказівки для виконання стадії растеризування.

 

2.1.6 Операції обробки пікселів

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

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

Існують спеціальні операції копіювання пікселів для копіювання даних з буфера кадру в інші частини буфера кадру або в область пам'яті, виділену для текстур. Виконується однопрохідна реалізація операцій при передачі пікселя, а потім дані записуються в область пам'яті, виділену для текстур або назад у буфер кадру.

 


Информация о работе «Використання OpenGL. Моделювання вогню»
Раздел: Информатика, программирование
Количество знаков с пробелами: 58181
Количество таблиц: 1
Количество изображений: 2

0 комментариев


Наверх