Вступ до OpenGL в Android

OpenGL розшифровується як Open Graphics Library. Це в основному API, який використовується Android для підтримки високопродуктивної графіки, як 2D та 3D графіка. Загальне використання OpenGL для передачі даних з процесора в GPU. Це робиться OpenGL об’єктами. Це графічний інтерфейс API. У цій темі ми збираємося дізнатися про OpenGL в Android.

Об'єкти OpenGL складаються з станів і даних, і вони допомагають передавати дані між процесором і GPU. OpenGL ES - популярна специфікація API OpenGL, спеціально призначена для вбудованих систем.

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

GLSurfaceView

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

GLSurfaceView.Renderer

Інтерфейс GLSurfaceView.Renderer містить методи, необхідні для малювання графіки в GLSurfaceView. Реалізація цього інтерфейсу повинна забезпечуватися як окремий клас, приєднаний до екземпляра GLSurfaceView за допомогою GLSurfaceView.setRenderer () .

Для реалізації інтерфейсу GLSurfaceView.Renderer потрібно реалізувати такі методи:

  • onSurfaceCreate () : Цей метод викликається під час створення GLSurfaceView.
  • onDrawFrame () : Цей метод викликається під час кожного перемальовування GLSurfaceView.
  • onSurfaceChanged () : Цей метод називається, коли змінюється геометрія GLSurfaceView (розмір, орієнтація тощо).

Як працює OpenGL в Android?

Існує кілька типів об’єктів OpenGL. Наприклад, об'єкт вершинного буфера, який може зберігати вершини символу. Другий приклад - Текстура, яка може зберігати дані зображення.

Такі дані, як вершини, нормалі та УФ-координати, які представляють характеристики сітки, завантажуються в об'єкт Vertex Buffer і потім надсилаються до GPU для обробки. Як тільки вони опиняються в графічному процесорі, ці дані проходитимуть під назвою OpenGL Repend Pipeline.

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

Процес подачі конвеєра OpenGL в Android складається з шести етапів, як показано нижче:

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

Пер-вертексна операція

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

Первісні збори

Вершини збираються на пари по 2, 3 і більше на цьому конкретному етапі і примітив збирається, наприклад, у трикутник.

Примітивна обробка

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

Растеризація

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

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

Коли примітивні форми були растеризовані, то колір або фактура наносяться на геометрію.

Операція по фрагментам

Нарешті, фрагменти піддаються різним тестам, таким як:

  • Тест власності на пікселі
  • Тест на ножиці
  • Альфа-тест
  • Трафаретний тест
  • Тест на глибину

З цих шести етапів два етапи контролюються програмами, які називаються Шейдерами.

Шейдер, коротше кажучи, це невелика програма, розроблена вами лише, яка живе в GPU. Існує спеціальна мова графіки, відома як OpenGL Shading Language (GLSL), на якій написано шейдер. Два важливі етапи трубопроводу OpenGL, де відбувається шейдер, називаються етапами «Пер-Вершинна обробка» та «Пер-фрагментна обробка».

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

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

Програма GL

Поради для OpenGL в Android

Якщо ви новачок у програміста OpenGL, то деякі з цих пунктів нижче, можливо, ви ще не стикалися з вами. Нижче наведено декілька вказівок, про які слід подбати під час використання OpenGL в Android. Вони є загальними помилками. Тому завжди пам’ятайте про це.

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

Попередні реквізити для OpenGL в Android

Нижче наведено необхідну умову для OpenGL в Android.

Навички програмного забезпечення

  • C, тобто мова програмування.
  • Знання C ++ не потрібні, але вони корисні.
  • Використання різних бібліотек, які можуть бути або статичними, або динамічними.

Математика

  • Знання векторів як в 2D, так і в 3D.
  • Матриці
  • Концепції математики базового рівня.

Це все основні та основні поняття, які потрібно почати з OpenGL. Можливо, вам доведеться вивчити кілька математичних понять, але після того, як ви перейдете до проміжного рівня. Але це повністю залежить від вас. Ви можете передати багато речей за допомогою різних бібліотек.

Висновок: OpenGL в Android

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

Рекомендована стаття

Це керівництво по OpenGL в Android. Тут ми обговорили Процес роботи та передумови OpenGL в Android. Ви також можете ознайомитися з іншими запропонованими нами статтями, щоб дізнатися більше -

  1. WebGL проти OpenGL
  2. Що таке Когнос?
  3. Що таке програмне забезпечення Jira?
  4. Кар'єра в Лазурному