Uvod u OpenGL u Androidu

OpenGL označava Open Graphics Library. To je u osnovi API koji android koristi za podršku grafike visokih performansi poput 2D i 3D grafike. Sveukupna upotreba OpenGL-a za prijenos podataka iz CPU-a u GPU. To rade OpenGL objekti. To je grafički API za više platformi. U ovoj ćemo temi upoznati OpenGL u Androidu.

OpenGL objekti se sastoje od stanja i podataka i oni pomažu u prijenosu podataka između CPU-a i GPU-a. OpenGL ES popularna je specifikacija OpenGL API-ja koja je posebno posvećena ugrađenim sustavima.

OpenGL u Androidu podržava Android koristeći Native Development Kit (NDK) i njegov Framework API. Temeljne klase u Android okviru pomažu vam u stvaranju i uređivanju grafike. OpenGL ES API koji se koristi s ovim klasama naziva se GLSurfVaceiew.Renderer i GLSurfaceView. Dobro razumijevanje provedbe ovih predavanja korisno je za korištenje OpenGL-a u Android aplikaciji.

GLSurfaceView

U ovom prikazu možete crtati i manipulirati objektima. Lako je koristiti ovu klasu jer možete stvoriti objekt GLSurfaceView i dodati mu Renderer. Događaje na dodirnom zaslonu možete snimiti tako da proširite klasu GLSurfaceView kako biste implementirali slušatelje dodira.

GLSurfaceView.Renderer

Sučelje GLSurfaceView.Renderer sadrži metode potrebne za crtanje grafike u GLSurfaceView. Implementacija ovog sučelja trebala bi se osigurati kao zasebna klasa priključena na instancu GLSurfaceView pomoću GLSurfaceView.setRenderer () .

Za implementaciju sučelja GLSurfaceView.Renderer morate implementirati sljedeće metode:

  • onSurfaceCreate () : Ova metoda se poziva tijekom stvaranja GLSurfaceView.
  • onDrawFrame () : Ova metoda se poziva tijekom svakog ponovnog crtanja GLSurfaceView.
  • onSurfaceChanged () : Ova metoda se naziva kada se GLSurfaceView promijeni (veličina, orijentacija itd.).

Kako OpenGL u Androidu funkcionira?

Postoji nekoliko vrsta OpenGL objekata. Na primjer, Vertex Buffer objekt koji može pohraniti vrhove znaka. Drugi primjer je Tekstura koja može pohraniti slikovne podatke.

Podaci kao što su vrhovi, normalne vrijednosti i UV koordinate koje predstavljaju karakteristike mreže učitavaju se u Vertex Buffer objekt i zatim šalju u GPU na obradu. Nakon što se nađu u GPU-u, ti bi podaci prošli kroz poznat kao OpenGL cjevovod za izvođenje.

Glavni zadaci za koje je odgovoran cjevovod su pretvorba vrhova u pravi koordinatni sustav, sastavljanje vrhova znaka, primjena boje ili teksture i prikaz znaka na zadanom okvirnom kadiru koji je zaslon.

Postupak cjevovoda za prikazivanje OpenGL-a u Androidu sastoji se od šest faza kao u nastavku:

  1. Operacija po vertikali
  2. Primitivna skupština
  3. Primitivna obrada
  4. rasterizaciju
  5. Obrada fragmenata
  6. Operacija po fragmentu

Operacija po vertikali

Prvi i najvažniji korak za stvaranje slike je geometrijski podatak koji se mora iz jednog koordinatnog sustava pretvoriti u drugi koordinatni sustav.

Primitivna skupština

Osovine se u ovom koraku sakupljaju u parove 2, 3 i više, a primitiv je sabran, na primjer, trokut.

Primitivna obrada

Kad se primitivi sakupe, testira se da li spadaju u View-Volume. U slučaju da ne prođu ovaj određeni test, zanemarit će ih u daljnjim koracima. Ovaj test je poznat kao Clipping.

rasterizaciju

Tada se primitivi razgrađuju na komade manjih jedinica i odgovaraju pikseli u framebufferu. Svaka od tih manjih jedinica tada je poznata i kao Fragmenti.

Obrada fragmenata

Kad su primitivni rasterizirani, na geometriju se primjenjuju boja ili tekstura.

Operacija po fragmentu

Na kraju, fragmenti se podvrgavaju raznim testovima kao što su:

  • Pixel Ownership test
  • Škarski test
  • Alfa test
  • Stencil test
  • Dubinski test

Od ovih šest faza, dvije faze kontroliraju programi koji se nazivaju Shaders.

Shader, ukratko, mali je program koji je razvio samo vi koji živi u GPU-u. Postoji poseban grafički jezik poznat kao OpenGL Shading Language (GLSL) na kojem je napisano shader. Dvije važne faze u OpenGL cjevovodu gdje se odvija shader nazivaju se faze „Per-Vertex Processing“ i „Per-Fragment Processing“.

Shader koji se obrađuje u fazi "Per-Vertex" poznat je pod nazivom Vertex Shader. Shader koji se obrađuje u fazi "Per Fragment" poznat je pod nazivom Fragment Shader. Krajnji i osnovni cilj vertex shader-a je dati konačnu transformaciju vrhova karaktera u cjevovodu za prikazivanje dok je cilj shader-a fragmenta dati podatke o bojanju i teksturi za svaki od naslova piksela u framebufferu.

Kada se podaci proslijede putem OpenGL cjevovoda za prikaz, tada će se na ekranu vašeg uređaja pojaviti 3D ili 2D model.

GL Program

Savjet za OpenGL u Androidu

U slučaju da ste početnik u programu OpenGL programera, možda neke od sljedećih točaka možda još niste sreli. Ispod su neke smjernice za koje trebate voditi računa o korištenju OpenGL-a u Androidu. Česte su pogreške. Stoga to uvijek imajte na umu.

  1. Nepravilno skaliranje normala za rasvjetu
  2. Loša Tessellation boli rasvjetu
  3. Uvijek pamtite svoj način matrice
  4. Prelijevanje matrice projekcijskih matrica
  5. Ne postavljanje svih razina Mipmapa
  6. Čitanje piksela svjetlosti u pozadini

Preduvjeti za OpenGL za Android

Ispod su preduvjeti potrebni za OpenGL u Androidu.

Vještine softvera

  • C, to jest programski jezik.
  • Znanje C ++ nije potrebno, ali je korisno.
  • Upotreba raznih knjižnica koje mogu biti ili statičke ili dinamičke.

Matematika

  • Poznavanje vektora i u 2D i 3D.
  • matrice
  • Pojmovi matematike na osnovnoj razini.

Sve su to glavni i osnovni koncepti koji su potrebni za početak s OpenGL-om. Možda ćete trebati naučiti još nekih matematičkih koncepata, ali nakon što dođete na srednju razinu. Ali to potpuno ovisi o vama. Pomoću različitih knjižnica možete proći više stvari.

Zaključak: OpenGL u Androidu

Stoga je OpenGL potpuno funkcionalan API koji je na primitivnoj razini i omogućava programeru da se učinkovito pozabavi i iskoristi grafički hardver. Veliki broj knjižnica na visokoj razini kao i aplikacija koristi OpenGL zbog njegovih performansi, lakoće programiranja, proširivosti kao i široke podrške.

Preporučeni članak

Ovo je vodič za OpenGL u Androidu. Ovdje smo razgovarali o Procesu rada i preduvjetima OpenGL-a za Android. Možete i proći naše druge predložene članke da biste saznali više -

  1. WebGL vs OpenGL
  2. Što je Cognos?
  3. Što je Jira Software?
  4. Karijera u Azuru

Kategorija: