Introducere în OpenGL în Android

OpenGL înseamnă Open Graphics Library. Practic, este o API folosită de Android pentru a sprijini graficele de înaltă performanță, precum graficele 2D și 3D. Utilizarea generală a OpenGL pentru transferul datelor de la procesor la GPU. Acest lucru este realizat de OpenGL Objects. Este o API grafică multiplă platformă. În acest subiect, vom învăța despre Android în OpenGL.

Obiectele OpenGL sunt formate din stări și date și sunt cele care ajută la transmiterea datelor între procesor și GPU. OpenGL ES este o specificație populară a API-ului OpenGL, dedicată în special sistemelor încorporate.

OpenGL în Android este acceptat de Android folosind Native Development Kit (NDK) și API-ul cadru. Clasele fundamentale din cadrul Android vă ajută să creați și să editați grafică. API-ul OpenGL ES utilizat cu aceste clase se numește GLSurfVaceiew.Renderer și GLSurfaceView. O bună înțelegere a implementării acestor clase este utilă în utilizarea OpenGL în aplicația dvs. Android.

GLSurfaceView

Puteți desena și manipula obiecte în această vizualizare. Este ușor să utilizați această clasă deoarece puteți crea un obiect al GLSurfaceView și puteți adăuga un Renderer la acesta. Puteți captura evenimente de pe ecranul tactil prin extinderea clasei GLSurfaceView pentru a implementa ascultătorii.

GLSurfaceView.Renderer

Interfața GLSurfaceView.Renderer conține metode care sunt necesare pentru desenarea graficelor într-un GLSurfaceView. Implementarea acestei interfețe ar trebui furnizată ca o clasă separată atașată instanței GLSurfaceView folosind GLSurfaceView.setRenderer () .

Pentru implementarea interfeței GLSurfaceView.Renderer trebuie să implementați următoarele metode:

  • onSurfaceCreated () : această metodă este apelată în timpul creării GLSurfaceView.
  • onDrawFrame () : această metodă este apelată în timpul fiecărei redescoperiri a GLSurfaceView.
  • onSurfaceChanged () : această metodă se numește atunci când geometria GLSurfaceView se schimbă (dimensiunea, orientarea etc).

Cum funcționează OpenGL în Android?

Există mai multe tipuri de obiecte OpenGL. De exemplu, un obiect Buffer Vertex care poate stoca vertexuri ale unui personaj. Al doilea exemplu este Textura care poate stoca date de imagine.

Datele cum ar fi vârfurile, normalele și coordonatele UV care reprezintă caracteristicile rețelei sunt încărcate într-un obiect tampon Vertex și apoi trimise la GPU pentru procesare. Odată ce este în GPU, aceste date ar trece prin care este cunoscut sub numele de OpenGL Rendering Pipeline.

Principalele sarcini pentru care este responsabil Rendering Pipeline sunt conversia vârfurilor în sistemul de coordonate din dreapta, asamblarea vârfurilor unui personaj, aplicarea culorii sau texturii și afișarea caracterului pe framebuffer implicit, care este ecranul.

Procesul de redare a conductelor OpenGL în Android constă în șase etape, după cum urmează:

  1. Operație per-vertex
  2. Adunarea primitivă
  3. Prelucrare primitivă
  4. rasterizarea
  5. Prelucrarea fragmentelor
  6. Operațiune pe fragment

Operație per-vertex

Primul și cel mai important pas pentru a reda o imagine este că datele de geometrie trebuie convertite dintr-un sistem de coordonate într-un alt sistem de coordonate.

Adunarea primitivă

Vârfurile sunt colectate în perechi de 2, 3 și mai mult în acest pas particular și primitivul este asamblat, de exemplu, un triunghi.

Prelucrare primitivă

Când primitivele au fost montate, acestea sunt testate pentru a verifica dacă se încadrează într-un volum de vizualizare. În cazul în care nu trec acest test anume, ar fi ignorate în pași suplimentari. Acest test este cunoscut sub numele de Clipping.

rasterizarea

Apoi, primitivele sunt împărțite în bucăți de unități mai mici și corespunzătoare celei de pixeli din framebuffer. Fiecare dintre aceste unități mai mici este apoi cunoscută sub numele de Fragmente.

Prelucrarea fragmentelor

Când primitivul a fost rasterizat, atunci culoarea sau textura este aplicată geometriei.

Operațiune pe fragment

În cele din urmă, fragmentele sunt supuse unor teste diferite, cum ar fi:

  • Testul de proprietate a pixelilor
  • Test de foarfecă
  • Test alfa
  • Test de stencil
  • Test de adâncime

Din aceste șase etape, două etape sunt controlate de programe care se numesc Shaders.

Pe scurt, Shader este un program mic care este dezvoltat de tine doar care trăiește în GPU. Există un limbaj grafic special cunoscut sub numele de OpenGL Shading Language (GLSL) în care este scris un shader. Cele două etape importante ale conductei OpenGL unde are loc o umbră se numesc „Per-Vertex Processing” și „Per-Fragment Processing”.

Shader-ul care este procesat în etapa „Per-Vertex” este cunoscut sub numele de Vertex Shader. Shader care este procesat în etapa „Per-Fragment” este cunoscut sub numele de Fragment Shader. Scopul final și de bază al shader-ului de vertex este de a oferi transformarea finală a vârfurilor caracterului în conducta de redare, în timp ce scopul shader-ului de fragment este de a oferi datele de colorare și textură fiecăruia din titlurile de pixeli cadrului de bord.

Când datele sunt transmise prin conducta OpenGL Rendering Pipeline, atunci modelul 3D sau 2D vor apărea pe ecranul dispozitivului dumneavoastră.

Programul GL

Sfaturi pentru OpenGL în Android

În cazul în care sunteți începător în programul OpenGL, este posibil ca unele dintre aceste puncte de mai jos să nu fi fost încă întâlnite de dvs. Mai jos sunt câteva recomandări pentru care să aveți grijă în timp ce utilizați OpenGL în Android. Sunt greșeli comune. Așa că țineți-le mereu în considerare.

  1. Ameliorarea necorespunzătoare a normelor pentru iluminat
  2. Defecțiunea precară afectează iluminarea
  3. Amintiți-vă întotdeauna de modul dvs. matrice
  4. Debordarea stivei de matrice de proiecție
  5. Nu setează toate nivelurile Mipmap
  6. Citirea înapoi a pixelilor de lumină

Cerințe preliminare pentru OpenGL în Android

Mai jos sunt condițiile necesare pentru OpenGL în Android.

Aptitudini software

  • C, adică limbaj de programare.
  • Cunoașterea C ++ nu este necesară, dar este utilă.
  • Utilizarea diferitelor biblioteci care pot fi statice sau dinamice.

Matematică

  • Cunoașterea vectorilor atât în ​​2D cât și în 3D.
  • matrici
  • Conceptele de bază ale matematicii.

Acestea sunt toate conceptele principale și de bază care sunt necesare pentru a începe cu OpenGL. S-ar putea să fie nevoie să înveți câteva concepte de matematică, dar după ce ai ajuns la nivelul intermediar. Dar asta depinde în totalitate de tine. Puteți trece mai multe lucruri cu ajutorul diferitelor biblioteci.

Concluzie: OpenGL în Android

Prin urmare, OpenGL este un API complet funcțional, care este la nivel primitiv și care permite programatorului să se adreseze eficient și să profite de hardware-ul grafic. Un număr mare de biblioteci la nivel înalt, precum și aplicații folosesc OpenGL datorită performanțelor sale, ușurinței programării, extensibilității, precum și suportului larg.

Articol recomandat

Acesta a fost un ghid pentru OpenGL în Android. Aici am discutat despre Procesul de lucru și despre cerințele preliminare ale OpenGL în Android. Puteți parcurge și alte articole sugerate pentru a afla mai multe -

  1. WebGL vs OpenGL
  2. Ce este Cognos?
  3. Ce este Jira Software?
  4. Cariera în Azure