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

OpenGL означава Open Graphics Library. Това е основно API, използван от android за поддържане на високоефективна графика като 2D и 3D графика. Цялостното използване на OpenGL за прехвърляне на данните от процесора към графичния процесор. Това се прави от 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:

  • onSurfaceCreate () : Този метод се извиква по време на създаването на GLSurfaceView.
  • onDrawFrame () : Този метод се извиква по време на всяко преначертаване на GLSurfaceView.
  • onSurfaceChanged () : Този метод се нарича при промяна на геометрията на GLSurfaceView (размер, ориентация и т.н.).

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

Съществуват няколко типа OpenGL обекти. Например, Vertex Buffer Object, който може да съхранява върхове на символ. Вторият пример е Texture, който може да съхранява данни от изображения.

Данни като върхове, нормали и UV координати, които представляват характеристиките на мрежата, се зареждат в Vertex Buffer Object и след това се изпращат на GPU за обработка. След като са в графичния процесор, тези данни ще преминат през това, известно като OpenGL тръбопровод за рендиране.

Основните задачи, за които е отговорен тръбопроводът, са преобразуването на върховете в правилната координатна система, сглобяването на върховете на даден символ, нанасянето на цвят или текстура и изобразяването на символа върху рамковия буфер по подразбиране, който е екранът.

Процесът на визуализация на OpenGL в Android се състои от шест етапа, както е показано по-долу:

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

Операция на върха

Първата и най-важна стъпка за изобразяване на изображение е геометричните данни трябва да бъдат преобразувани от една координатна система в друга координатна система.

Примитивно събрание

В този конкретен етап върховете се събират на двойки по 2, 3 и повече и примитивът се сглобява, например, триъгълник.

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

Когато примитивите са сглобени, те се тестват, за да проверят дали попадат в рамките на View-Volume. В случай, че не преминат този конкретен тест, те ще бъдат игнорирани в следващи стъпки. Този тест е известен като Clipping.

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

Тогава Примитивите се разграждат на парчета от по-малки единици и съответстват на тези на пиксели в framebuffer. Всяка от тези по-малки единици след това е известна като фрагменти.

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

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

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

И накрая, фрагментите са подложени на различни тестове като:

  • Тест за собственост на пиксели
  • Тест с ножица
  • Алфа тест
  • Тест за трафарет
  • Тест за дълбочина

От тези шест етапа два етапа се контролират от програми, които се наричат ​​Шейдъри.

Накратко Shader е малка програма, която се разработва само от вас, която живее в GPU. Има специален графичен език, известен като OpenGL Shading Language (GLSL), на който е написан шейдър. Двата важни етапа в OpenGL тръбопровода, където се извършва шейдър, се наричат ​​етапи „Per-Vertex Processing“ и „Per-Fragment Processing“.

Шейдърът, който се обработва в етап "Per-Vertex", е известен като Vertex Shader. Шейдърът, който се обработва в етапа „Per-Fragment“, е известен като Shagment Fragment. Крайната и основна цел на върховия шейдър е да даде окончателното преобразуване на върховете на символа в тръбопровода за рендериране, докато целта на фрагмента шейдър е да даде данни за оцветяване и текстура на всяко от заглавията на пиксела към framebuffer.

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

GL програма

Съвети за OpenGL в Android

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

  1. Неправилно мащабиране на нормите за осветление
  2. Лошо осветление на тесселацията боли
  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. Какво е Cognos?
  3. Какво е Jira Software?
  4. Кариера в Azure