Введение в 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 состоит из шести этапов, как показано ниже:
- Per-Vertex Operation
- Примитивная Ассамблея
- Примитивная Обработка
- растеризации
- Обработка фрагментов
- Операция за фрагмент
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. Это распространенные ошибки. Так что всегда имейте это в виду.
- Неправильное масштабирование норм для освещения
- Плохая тесселяция вредит освещению
- Всегда помни свой матричный режим
- Переполнение стека проекционной матрицы
- Не установка всех уровней Mipmap
- Чтение обратно пикселей яркости
Предварительные условия для OpenGL в Android
Ниже приведены предварительные условия, необходимые для OpenGL в Android.
Навыки программирования
- С, то есть язык программирования.
- Знание С ++ не обязательно, но полезно.
- Использование различных библиотек, которые могут быть статическими или динамическими.
Математика
- Знание векторов в 2D и 3D.
- Матрицы
- Базовый уровень математических понятий.
Это все основные и основные понятия, которые необходимы для начала работы с OpenGL. Возможно, вам придется изучить некоторые математические понятия, но после того, как вы перейдете на промежуточный уровень. Но это полностью зависит от вас. Вы можете передать много вещей с помощью разных библиотек.
Вывод: OpenGL в Android
Таким образом, OpenGL - это полностью функциональный API на уровне примитивов, позволяющий программисту эффективно использовать и использовать графическое оборудование. Большое количество высокоуровневых библиотек, а также приложений используют OpenGL из-за его производительности, простоты программирования, расширяемости, а также широкой поддержки.
Рекомендуемая статья
Это было руководство по OpenGL в Android. Здесь мы обсудили процесс работы и предварительные условия OpenGL в Android. Вы также можете просмотреть наши другие предлагаемые статьи, чтобы узнать больше -
- WebGL против OpenGL
- Что такое Cognos?
- Что такое Jira Software?
- Карьера в Лазурном