Úvod do OpenGL v systéme Android

OpenGL znamená Open Graphics Library. Ide v podstate o rozhranie API, ktoré používa android na podporu vysokovýkonnej grafiky, ako je 2D a 3D grafika. Celkové využitie OpenGL na prenos údajov z CPU do GPU. Robia to OpenGL Objects. Jedná sa o multiplatformové grafické rozhranie API. V tejto téme sa dozvieme o OpenGL v systéme Android.

Objekty OpenGL sa skladajú zo stavov a údajov a pomáhajú prenášať údaje medzi CPU a GPU. OpenGL ES je populárna špecifikácia OpenGL API, ktorá je špeciálne určená pre vstavané systémy.

OpenGL v systéme Android podporuje systém Android pomocou súpravy Native Development Kit (NDK) a jej framework API. Základné triedy v rámci systému Android vám pomáhajú vytvárať a upravovať grafiku. OpenGL ES API používané v týchto triedach sa nazýva GLSurfVaceiew.Renderer a GLSurfaceView. Dobré pochopenie implementácie týchto tried je užitočné pri používaní OpenGL v aplikácii pre Android.

GLSurfaceView

V tomto zobrazení môžete nakresliť a manipulovať s objektmi. Použitie tejto triedy je ľahké, pretože môžete vytvoriť objekt GLSurfaceView a pridať do neho Renderer. Udalosti dotykovej obrazovky môžete zachytiť rozšírením triedy GLSurfaceView o implementáciu dotykových poslucháčov.

GLSurfaceView.Renderer

Rozhranie GLSurfaceView.Renderer obsahuje metódy, ktoré sú potrebné na kreslenie grafiky v GLSurfaceView. Implementácia tohto rozhrania by mala byť poskytnutá ako samostatná trieda pripojená k inštancii GLSurfaceView pomocou GLSurfaceView.setRenderer () .

Na implementáciu rozhrania GLSurfaceView.Renderer musíte implementovať nasledujúce metódy:

  • onSurfaceCreated () : Táto metóda sa volá počas vytvárania GLSurfaceView.
  • onDrawFrame () : Táto metóda sa volá počas každého prekreslenia GLSurfaceView.
  • onSurfaceChanged () : Táto metóda sa volá, keď sa zmení geometria GLSurfaceView (veľkosť, orientácia atď.).

Ako funguje OpenGL v systéme Android?

Existuje niekoľko typov objektov OpenGL. Napríklad objekt Vertex Buffer Object, ktorý dokáže ukladať vrcholy znaku. Druhým príkladom je textúra, ktorá dokáže ukladať obrazové údaje.

Dáta, ako sú vrcholy, normály a UV súradnice, ktoré predstavujú vlastnosti siete, sa načítajú do objektu Vertex Buffer Object a potom sa odošlú do GPU na spracovanie. Akonáhle bude v GPU, prejdú tieto údaje známym názvom OpenGL Rendering Pipeline.

Hlavnými úlohami, za ktoré zodpovedá Renderingov potrubie, sú konverzia vrcholov na pravý súradnicový systém, zostavenie vrcholov znaku, aplikácia farby alebo textúry a zobrazenie znaku na predvolenom framebuffere, ktorým je obrazovka.

Proces vykresľovacieho potrubia OpenGL v systéme Android pozostáva zo šiestich etáp:

  1. Operácia na jeden vrchol
  2. Primitívne zhromaždenie
  3. Primitívne spracovanie
  4. rasterizácia
  5. Spracovanie fragmentov
  6. Operácia na fragment

Operácia na jeden vrchol

Prvým a najdôležitejším krokom na vykreslenie obrázka sú geometrické údaje, ktoré sa musia skonvertovať z jedného súradnicového systému do druhého súradnicového systému.

Primitívne zhromaždenie

Vrcholy sa v tomto konkrétnom kroku zhromažďujú do párov po 2, 3 a viac a primitív je zostavený napríklad z trojuholníka.

Primitívne spracovanie

Po zostavení primitívov sa skúša, či spadajú do zväzku zobrazení. V prípade, že tento konkrétny test nevyhovie, budú v ďalších krokoch ignorovaní. Tento test sa nazýva Clipping.

rasterizácia

Potom sa primitíva rozdelia na kúsky menších jednotiek a zodpovedajú pixlom v rámčeku. Každá z týchto menších jednotiek sa potom nazýva Fragmenty.

Spracovanie fragmentov

Ak je primitív rastrovaný, na geometriu sa použije farba alebo textúra.

Operácia podľa fragmentu

Nakoniec sa fragmenty podrobia rôznym testom, ako napríklad:

  • Test vlastníctva pixelov
  • Nožnicový test
  • Alfa test
  • Šablóna test
  • Hĺbkový test

Z týchto šiestich etáp sú dve etapy riadené programami, ktoré sa nazývajú Shaders.

Shader, skrátka, je malý program, ktorý ste vyvinuli iba vy a ktorý žije v GPU. Existuje špeciálny grafický jazyk známy ako OpenGL Shading Language (GLSL), v ktorom je napísaný shader. Dve dôležité fázy v potrubí OpenGL, kde sa uskutočňuje shader, sa nazývajú fázy „Per-Vertex Processing“ a „Per-Fragment Processing“.

Shader, ktorý sa spracúva vo fáze „Per-Vertex“, sa nazýva Vertex Shader. Shader, ktorý sa spracúva vo fáze „Per-Fragment“, sa nazýva Fragment Shader. Konečným a základným cieľom vrcholového shadera je poskytnúť konečnú transformáciu vrcholov znaku do vykresľovacieho potrubia, zatiaľ čo cieľom shadera fragmentov je poskytnúť údaje o sfarbení a textúre každej zo záhlaví pixelov framebufferu.

Ak údaje prechádzajú cez potrubie OpenGL Rendering Pipeline, na obrazovke vášho zariadenia sa zobrazí buď 3D alebo 2D model.

Program GL

Rady pre OpenGL v systéme Android

V prípade, že ste začiatočník v programátoroch OpenGL, nemuseli ste sa s vami ešte stretnúť s niektorými z nasledujúcich bodov. Nižšie uvádzame niekoľko pokynov, o ktoré sa musíte pri používaní OpenGL v systéme Android postarať. Sú to bežné chyby. Preto vždy pamätajte.

  1. Nesprávne škálovanie normálov pre osvetlenie
  2. Slabé teselovanie poškodzuje osvetlenie
  3. Vždy si pamätajte svoj maticový režim
  4. Pretečenie zásobníka premietacích matíc
  5. Nenastavujete všetky úrovne mapy máp
  6. Čítanie spätných jasových pixelov

Predpoklady pre OpenGL v systéme Android

Nižšie sú uvedené predpoklady vyžadované pre OpenGL v systéme Android.

Softvérové ​​zručnosti

  • C, to znamená programovací jazyk.
  • Znalosť C ++ nie je potrebná, ale je užitočná.
  • Použitie rôznych knižníc, ktoré môžu byť statické alebo dynamické.

matematika

  • Znalosť vektorov v 2D aj 3D.
  • matice
  • Základné matematické pojmy.

Toto sú všetky hlavné a základné pojmy, ktoré sú potrebné na začatie používania OpenGL. Možno sa budete musieť naučiť viac matematických konceptov, ale až sa dostanete na strednú úroveň. Ale to úplne záleží na vás. Mnoho vecí môžete odovzdávať pomocou rôznych knižníc.

Záver: OpenGL v systéme Android

OpenGL je preto úplne funkčné API, ktoré je primitívne a umožňuje programátorovi efektívne osloviť a využiť grafický hardvér. Veľký počet knižníc na vysokej úrovni, ako aj aplikácií, používa OpenGL kvôli svojmu výkonu, ľahkosti programovania, rozšíriteľnosti a širokej podpore.

Odporúčaný článok

Toto bol sprievodca OpenGL v systéme Android. Tu sme diskutovali o postupe práce a predpokladoch OpenGL v systéme Android. Viac informácií nájdete aj v ďalších navrhovaných článkoch -

  1. WebGL verzus OpenGL
  2. Čo je Cognos?
  3. Čo je to softvér Jira?
  4. Kariéra v Azure

Kategórie: