Uvod v OpenGL v Androidu

OpenGL pomeni Open Library Graphics. To je v osnovi API, ki ga android uporablja za podporo visokozmogljive grafike, kot sta 2D in 3D grafika. Splošna uporaba OpenGL-a za prenos podatkov iz CPU-ja v GPU. To stori OpenGL Objects. To je grafični API za več platform. V tej temi bomo spoznali OpenGL v Androidu.

Objekti OpenGL so sestavljeni iz stanj in podatkov, ki pomagajo pri prenosu podatkov med CPU in GPU. OpenGL ES je priljubljena specifikacija OpenGL API-ja, ki je posebej namenjena vgrajenim sistemom.

OpenGL v Androidu podpira Android s pomočjo Native Development Kit (NDK) in njegovega okvirnega API-ja. Temeljni razredi v sistemu Android vam pomagajo ustvarjati in urejati grafiko. OpenGL ES API, ki se uporablja pri teh razredih, se imenuje GLSurfVaceiew.Renderer in GLSurfaceView. Dobro uporabljanje teh razredov je koristno pri uporabi OpenGL-a v aplikaciji za Android.

GLSurfaceView

V tem pogledu lahko rišete in manipulirate s predmeti. Ta razred je enostavno uporabljati, saj lahko ustvarite predmet GLSurfaceView in mu dodate Renderer. Dogodke na zaslonu na dotik lahko zajamete tako, da razširite razred GLSurfaceView za izvajanje poslušalcev na dotik.

GLSurfaceView.Renderer

Vmesnik GLSurfaceView.Renderer vsebuje metode, ki so potrebne za risanje grafik v GLSurfaceView. Izvedba tega vmesnika mora biti podana kot ločen razred, priložen primerku GLSurfaceView z uporabo GLSurfaceView.setRenderer () .

Za implementacijo vmesnika GLSurfaceView.Renderer morate implementirati naslednje načine:

  • onSurfaceCreate () : Ta metoda se imenuje med ustvarjanjem GLSurfaceView.
  • onDrawFrame () : Ta metoda se imenuje med vsakim ponovnim risanjem GLSurfaceView.
  • onSurfaceChanged () : Ta metoda se imenuje, ko se spremeni geometrija GLSurfaceView (velikost, orientacija itd.).

Kako deluje OpenGL v Androidu?

Obstaja več vrst objektov OpenGL. Na primer, objekt Verff Buffer, ki lahko shrani točke znaka. Drugi primer je tekstura, ki lahko shrani slikovne podatke.

Podatki, kot so točke, normalne vrednosti in koordinate UV, ki predstavljajo značilnosti mrežice, se naložijo v objekt Vertex Buffer in nato pošljejo v GPU v obdelavo. Ko so že v GPU-ju, bi ti podatki šli po tem znanem kot OpenGL-ov sistem za upodabljanje.

Glavne naloge, za katere je odgovoren cevovod za upodabljanje, so pretvorba tock v pravi koordinatni sistem, sestavljanje tock znaka, nanašanje barve ali teksture in prikaz znaka na privzetem framebufferju, ki je zaslon.

Proces upodabljanja OpenGL v Androidu je sestavljen iz šestih stopenj:

  1. Delovanje po vrhovih
  2. Primitivni zbor
  3. Primitivna obdelava
  4. Rasterizacija
  5. Obdelava fragmentov
  6. Operacija na fragment

Delovanje po vrhovih

Prvi in ​​najpomembnejši korak pri upodabljanju slike je, da se podatki iz geometrije pretvorijo iz enega koordinatnega sistema v drug koordinatni sistem.

Primitivni zbor

Točke se v tem koraku zberejo v pare po 2, 3 in več in primitiv je sestavljen, na primer, trikotnik.

Primitivna obdelava

Ko se primitivi sestavijo, se preskusijo, da preverijo, ali spadajo v vidno količino. Če ne bi opravili tega posebnega testa, bi jih v nadaljnjih korakih prezrli. Ta test je znan kot Clipping.

Rasterizacija

Nato se primitivi razdelijo na koščke manjših enot, ki ustrezajo slikovnim pikam v framebufferju. Vsaka od teh manjših enot je potem znana kot Fragmenti.

Obdelava fragmentov

Ko je bil primitiven rastriran, se na geometrijo nanese barva ali tekstura.

Operacija na fragment

Na koncu so fragmenti predloženi v različne teste, kot so:

  • Pixel Ownership test
  • Škarjasti test
  • Alfa test
  • Stencil test
  • Globinski test

Od teh šestih stopenj sta dve stopnji nadzorovani s programi, ki se imenujejo Shaders.

Shader, skratka, je majhen program, ki ga razvijete vi samo, ki živi v GPU-ju. Obstaja poseben grafični jezik, znan kot OpenGL Shading Language (GLSL), v katerega je napisan senčnik. Dve pomembni stopnji v cevovodu OpenGL, kjer poteka senčnik, se imenujeta fazi „Per-Vertex Processing“ in „Per-Fragment Processing“.

Senčnik, ki je obdelan v fazi "Per-Vertex", je znan kot Vertex Shader. Senčnik, ki je obdelan v fazi "Per-Fragment", je znan kot Fragment Shader. Končni in osnovni cilj vertex shaderja je dokončna preobrazba vrhov znaka v upodabljajoči cevovod, medtem ko je cilj senčnika fragmentov dati barvanje in teksturo podatke vsakemu od naslovov slikovnih pik v framebuffer.

Ko se podatki pošljejo skozi OpenGL cevovod za upodabljanje, se bo na zaslonu vaše naprave pojavil 3D ali 2D model.

Program GL

Nasveti za OpenGL v sistemu Android

Če ste začetnik programerja OpenGL, nekaterih od teh točk spodaj morda še niste srečali. Spodaj je nekaj smernic, na katere morate skrbeti med uporabo OpenGL v Androidu. So pogoste napake. Zato vedno imejte to v mislih.

  1. Nepravilno povečanje normale za razsvetljavo
  2. Slaba razsvetljava škodi osvetlitvi
  3. Vedno se spomnite svojega matričnega načina
  4. Preplavitev matrike projekcijske matrice
  5. Ni nastavitev vseh ravni Mipmap
  6. Branje povratnih svetlobnih pik

Predpogoji za OpenGL v Androidu

Spodaj so predpogoji za OpenGL v Androidu.

Programska znanja

  • C, torej programski jezik.
  • Znanje C ++ ni potrebno, vendar je koristno.
  • Uporaba različnih knjižnic, ki so lahko statične ali dinamične.

Matematika

  • Poznavanje vektorjev tako v 2D kot v 3D.
  • Matrice
  • Pojmi matematike na osnovni ravni.

Vse to so glavni in osnovni koncepti, ki so potrebni za začetek z OpenGL. Morda se boste morali naučiti nekaj več matematičnih konceptov, vendar potem, ko pridete do vmesne ravni. Ampak to je popolnoma odvisno od vas. S pomočjo različnih knjižnic lahko prenesete več stvari.

Zaključek: OpenGL v Androidu

Zato je OpenGL popolnoma funkcionalen API, ki je na primitivni ravni in omogoča programerju, da učinkovito obravnava in izkoristi grafično strojno opremo. Veliko število knjižnic na visoki ravni in aplikacij uporablja OpenGL zaradi njegove zmogljivosti, enostavnosti programiranja, razširljivosti in široke podpore.

Priporočeni članek

To je vodnik za OpenGL v Androidu. Tu smo razpravljali o postopku dela in predpogojih OpenGL v Androidu. Če želite izvedeti več, lahko preberete tudi druge naše predlagane članke -

  1. WebGL proti OpenGL
  2. Kaj je zdravilo Cognos?
  3. Kaj je Jira Software?
  4. Kariera v Azure