Нормализованное простір пристрою і область перегляду OpenGL – РОЗРОБКА ІГОР ДЛЯ ОС ANDROID

Коли OpenGL ES вже відомі проектуються на ближню площину відсікання точки трикутника, ми нарешті можемо перевести їх в піксельні координати фреймбуфер Для цього необхідно трансформувати точки в так зване нормалізувати простір пристрою Воно відповідає системі координат, показаної на рис 72 Грунтуючись на координатах нормалізованого простору пристрою, OpenGL ES підраховує кінцеві піксельні координати фреймбуфер за допомогою наступної простої формули:

– Де nor Х і nor Y – координати 3D-точки нормалізованих координат пристрою, a viewportWidth і viewportHeight – розміри точки спостереження в пікселах на осях х та у Не варто хвилюватися про нормалізованих координатах пристрою, оскільки OpenGL сам зробить всі перетворення автоматично Про що варто переживати, так це про точці спостереження і конусі відображення

&nbsp

Матриці

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

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

При множенні матриці на точку ми застосовуємо зміни до точки Наприклад, при множенні точки на матрицю, в якій закодований перехід на 10 одиниць по осі х, точка пересунеться на 10 одиниць по осі х і, як наслідок, змінить свої координати

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

Існує особлива матриця, звана одиничної (identity matrix) Якщо ми помножимо матрицю або точку на неї, нічого не відбудеться Вважайте множення точки або матриці на одиничну матрицю як множення на одиницю Вона не має ніякого ефекту Призначення одиничної матриці стане зрозуміліше, коли ми дізнаємося, як OpenGL ES обробляє матриці Типова проблема: що було раніше – яйце чи курка

ПРИМІТКА

Коли ми говоримо про точках, в даному контексті ми маємо на увазі ЗР-вектори

OpenGL ES містить три види матриць, застосовуваних до точок, моделей

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

Матриця проекції Назва говорить сама за себе – дана матриця кодує проекцію і, як наслідок, конус відображення нашої камери

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

Джерело: Mario Zechner / Маріо Цехнер, «Програмування ігор під Android», пров Єгор Сидорович, Євген зазноби, Видавництво «Пітер»

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*