Введение в OpenGL в Android

OpenGL расшифровывается как Open Graphics Library. Это в основном API, используемый Android для поддержки высокопроизводительной графики, такой как 2D и 3D графика. Общее использование OpenGL для передачи данных из CPU в GPU. Это делается объектами OpenGL. Это кроссплатформенный графический API. В этой теме мы собираемся узнать об OpenGL в Android.

Объекты OpenGL состоят из состояний и данных и предназначены для передачи данных между процессором и графическим процессором. OpenGL ES - это популярная спецификация OpenGL API, которая специально предназначена для встраиваемых систем.

OpenGL в Android поддерживается Android с помощью Native Development Kit (NDK) и его API-интерфейса. Основополагающие классы в платформе Android помогают создавать и редактировать графику. OpenGL ES API, используемый с этими классами, называется GLSurfVaceiew.Renderer и GLSurfaceView. Хорошее понимание реализации этих классов полезно при использовании OpenGL в вашем приложении Android.

GLSurfaceView

Вы можете рисовать и манипулировать объектами в этом представлении. Этот класс легко использовать, так как вы можете создать объект GLSurfaceView и добавить к нему Renderer. Вы можете захватывать события сенсорного экрана, расширяя класс GLSurfaceView для реализации сенсорных слушателей.

GLSurfaceView.Renderer

Интерфейс GLSurfaceView.Renderer содержит методы, необходимые для рисования графики в GLSurfaceView. Реализация этого интерфейса должна быть предоставлена ​​в виде отдельного класса, присоединенного к экземпляру GLSurfaceView с использованием GLSurfaceView.setRenderer () .

Для реализации интерфейса GLSurfaceView.Renderer необходимо реализовать следующие методы:

  • onSurfaceCreated () : этот метод вызывается при создании GLSurfaceView.
  • onDrawFrame () : этот метод вызывается во время каждой перерисовки GLSurfaceView.
  • onSurfaceChanged () : этот метод вызывается при изменении геометрии GLSurfaceView (размер, ориентация и т. д.).

Как работает OpenGL в Android?

Существует несколько типов объектов OpenGL. Например, объект буфера вершин, который может хранить вершины символа. Второй пример - это текстура, которая может хранить данные изображения.

Такие данные, как вершины, нормали и координаты UV, которые представляют характеристики сетки, загружаются в объект буфера вершин и затем отправляются в графический процессор для обработки. Как только они попадут в графический процессор, эти данные пройдут через так называемый конвейер рендеринга OpenGL.

Основными задачами, за которые отвечает Rendering Pipeline, являются преобразование вершин в правильную систему координат, сборка вершин символа, применение цвета или текстуры и отображение символа в кадровом буфере по умолчанию, который является экраном.

Процесс рендеринга OpenGL в Android состоит из шести этапов, как показано ниже:

  1. Per-Vertex Operation
  2. Примитивная Ассамблея
  3. Примитивная Обработка
  4. растеризации
  5. Обработка фрагментов
  6. Операция за фрагмент

Per-Vertex Operation

Первый и самый важный шаг для визуализации изображения - данные геометрии должны быть преобразованы из одной системы координат в другую систему координат.

Примитивная Ассамблея

В этом конкретном шаге вершины собираются в пары по 2, 3 и более, а примитив собирается, например, в треугольник.

Примитивная Обработка

Когда примитивы собраны, они проверяются, чтобы проверить, попадают ли они в объем просмотра. Если они не пройдут этот конкретный тест, они будут проигнорированы в дальнейших шагах. Этот тест известен как отсечение.

растеризации

Затем примитивы разбиваются на куски меньших единиц и соответствующие пикселям в кадровом буфере. Каждое из этих меньших подразделений тогда называют Фрагментами.

Обработка фрагментов

Когда примитив растеризован, цвет или текстура применяются к геометрии.

Операция за фрагмент

Наконец, фрагменты подвергаются различным тестам, таким как:

  • Тест владения пикселем
  • Тест ножниц
  • Альфа-тест
  • Тест трафарета
  • Тест глубины

Из этих шести этапов два этапа контролируются программами, которые называются шейдерами.

Короче говоря, Shader - это небольшая программа, разработанная вами только для GPU. Существует специальный графический язык, известный как OpenGL Shading Language (GLSL), на котором написан шейдер. Два важных этапа в конвейере OpenGL, где происходит шейдер, называются этапами «Обработка по вершинам» и «Обработка по фрагментам».

Шейдер, который обрабатывается на стадии «Per-Vertex», называется Vertex Shader. Шейдер, который обрабатывается на этапе «По фрагментам», называется Fragment Shader. Конечная и основная цель вершинного шейдера - дать окончательное преобразование вершин символа в конвейер рендеринга, тогда как цель фрагментного шейдера - передать данные окраски и текстуры для каждого из заголовков пикселя в кадровый буфер.

Когда данные передаются через конвейер рендеринга OpenGL, на экране вашего устройства появится либо 3D, либо 2D модель.

Программа GL

Советы для OpenGL в Android

Если вы новичок в программировании OpenGL, то некоторые из этих пунктов ниже, возможно, еще не встречались вами. Ниже приведены некоторые рекомендации, которые следует учитывать при использовании OpenGL в Android. Это распространенные ошибки. Так что всегда имейте это в виду.

  1. Неправильное масштабирование норм для освещения
  2. Плохая тесселяция вредит освещению
  3. Всегда помни свой матричный режим
  4. Переполнение стека проекционной матрицы
  5. Не установка всех уровней Mipmap
  6. Чтение обратно пикселей яркости

Предварительные условия для OpenGL в Android

Ниже приведены предварительные условия, необходимые для OpenGL в Android.

Навыки программирования

  • С, то есть язык программирования.
  • Знание С ++ не обязательно, но полезно.
  • Использование различных библиотек, которые могут быть статическими или динамическими.

Математика

  • Знание векторов в 2D и 3D.
  • Матрицы
  • Базовый уровень математических понятий.

Это все основные и основные понятия, которые необходимы для начала работы с OpenGL. Возможно, вам придется изучить некоторые математические понятия, но после того, как вы перейдете на промежуточный уровень. Но это полностью зависит от вас. Вы можете передать много вещей с помощью разных библиотек.

Вывод: OpenGL в Android

Таким образом, OpenGL - это полностью функциональный API на уровне примитивов, позволяющий программисту эффективно использовать и использовать графическое оборудование. Большое количество высокоуровневых библиотек, а также приложений используют OpenGL из-за его производительности, простоты программирования, расширяемости, а также широкой поддержки.

Рекомендуемая статья

Это было руководство по OpenGL в Android. Здесь мы обсудили процесс работы и предварительные условия OpenGL в Android. Вы также можете просмотреть наши другие предлагаемые статьи, чтобы узнать больше -

  1. WebGL против OpenGL
  2. Что такое Cognos?
  3. Что такое Jira Software?
  4. Карьера в Лазурном