Графіка OpenGL в Android додатку

&nbsp

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

У версії API Vl_r2 реалізована середу OpenGL ES 10 і здебільшого ES 11 По суті, це доменно-специфічний мову, інтегрований в Java Якщо вам хоча б недовго доводилося розробляти ігрові користувальницькі інтерфейси, ви звикнете до розробки програм з OpenGL для Android швидше, ніж програміст Java або навіть експерт по користувальницьких інтерфейсів Java

Перед тим як перейти до обговорення самої графічної бібліотеки OpenGL, давайте ненадовго звернемося до питання про те, як саме OpenGL малює пікселі, які відображаються на екрані Досі розглядався складний фреймворк View, використовуваний для організації і представлення обєктів на екрані OpenGL – це мова, на якому додаток описує цілу сцену Така сцена буде відображатися движком, який знаходиться не просто за межами віртуальної машини Java, а й взагалі може працювати на іншому процесорі (мається на увазі графічний процесор або GPU) Скоординувати на екрані відображення двох видів, оброблюваних різними процесорами, досить непросто

Класу SurfaceView, розглянутого вище, для цього майже достатньо Його завдання – створювати поверхню, на якій може малювати інший потік, крім графічного потоку для користувача інтерфейсу Нам дуже знадобився би інструмент, який представляє собою розширення SurfaceView, який би трохи краще підтримував багатопоточність, а також забезпечував підтримку OpenGL

Виявляється, що саме такий інструмент вже є Всі демонстраційні програми, що входять до складу дистрибутива Android SDK і використовують при роботі анімацію на основі OpenGL, працюють із застосуванням допоміжного класу GLSurfaceView Оскільки демонстраційні додатки, написані самими творцями Android, використовують цей клас, ми радимо розглянути можливість його застосування і в ваших програмах

GLSurfaceView визначає інтерфейс GLSurfaceView Renderer, який радикально спрощує всю роботу, повязану з OpenGL і GLSurfaceView Насправді ж весь цей функціонал виключно складний GLSurfaceView викликає метод відображення getConf и gSpec для отримання інформації про конфігурацію OpenGL Ще два методи – sizeChanged і surfaceCreated – викликаються GLSurfaceView для того, щоб повідомити засобу відображення (Рендерер) відповідно, що його розмір змінився або що потрібно підготуватися до малювання Нарешті drawFrame, центральна частина інтерфейсу, викликається для відображення нового кадру OpenGL

У прикладі 916 показані важливі методи з реалізації засоби відображення OpenGL

Приклад 916 Покадрова анімація з застосуванням OpenGL

Метод surfaceCreated готує сцену Він задає кілька атрибутів OpenGL, які повинні инициализироваться тільки в тому випадку, коли віджет отримує нову рисувальну поверхню Крім того, цей метод викликає и nit Image, який зчитує ресурс точкового малюнка (bitmap resource) і зберігає його у вигляді двомірної текстури Коли нарешті викликається drawFrame, все вже готове для малювання А саме: текстура застосована до плоскої фігурі, вершини якої задаються конструктором в vertexBuf, фаза анімації обрана, і сцена перемальовується

Джерело: Android Програмування на Java для нового покоління мобільних пристроїв

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


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

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

Ваш отзыв

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

*

*