Úvod do OpenGL v Androidu

OpenGL znamená Open Graphics Library. Jde v zásadě o API používané androidem pro podporu vysoce výkonné grafiky, jako je 2D a 3D grafika. Celkové využití OpenGL pro přenos dat z CPU do GPU. To se provádí pomocí objektů OpenGL. Jedná se o multiplatformové grafické API. V tomto tématu se dozvíme o OpenGL v Androidu.

Objekty OpenGL jsou tvořeny stavy a daty a pomáhají přenášet data mezi CPU a GPU. OpenGL ES je populární specifikace OpenGL API, která je speciálně určena pro vestavěné systémy.

OpenGL v Androidu je podporován Androidem pomocí Native Development Kit (NDK) a jeho framework API. Základní třídy v rámci systému Android vám pomáhají vytvářet a upravovat grafiku. OpenGL ES API používané s těmito třídami se nazývá GLSurfVaceiew.Renderer a GLSurfaceView. Dobré pochopení implementace těchto tříd je užitečné při používání OpenGL v aplikaci pro Android.

GLSurfaceView

V tomto zobrazení můžete nakreslit a manipulovat s objekty. Použití této třídy je snadné, protože můžete vytvořit objekt GLSurfaceView a přidat do něj Renderer. Události dotykové obrazovky můžete zachytit rozšířením třídy GLSurfaceView o implementaci dotykových posluchačů.

GLSurfaceView.Renderer

Rozhraní GLSurfaceView.Renderer obsahuje metody, které jsou vyžadovány pro kreslení grafiky v GLSurfaceView. Implementace tohoto rozhraní by měla být poskytována jako samostatná třída připojená k instanci GLSurfaceView pomocí GLSurfaceView.setRenderer () .

Pro implementaci rozhraní GLSurfaceView.Renderer musíte implementovat následující metody:

  • onSurfaceCreated () : Tato metoda se nazývá během vytváření GLSurfaceView.
  • onDrawFrame () : Tato metoda je volána během každého překreslení GLSurfaceView.
  • onSurfaceChanged () : Tato metoda se nazývá, když se změní geometrie GLSurfaceView (velikost, orientace atd.).

Jak funguje OpenGL v Androidu?

Existuje několik typů objektů OpenGL. Například objekt Vertex Buffer Object, který dokáže ukládat vrcholy znaku. Druhým příkladem je textura, která dokáže ukládat obrazová data.

Data, jako jsou vrcholy, normály a UV souřadnice, které představují vlastnosti sítě, se načtou do Vertex Buffer Object a pak se odešlou do GPU ke zpracování. Jakmile je v GPU, proběhla by tato data známá jako OpenGL Rendering Pipeline.

Hlavními úkoly, za které odpovídá Rendering Pipeline, je převod vrcholů na pravý souřadný systém, sestavování vrcholů znaku, aplikace barvy nebo textury a zobrazení znaku na výchozí framebuffer, kterým je obrazovka.

Proces vykreslování potrubí OpenGL v Androidu se skládá ze šesti fází, jak je uvedeno níže:

  1. Per-Vertex Operation
  2. Primitivní shromáždění
  3. Primitivní zpracování
  4. Rasterizace
  5. Zpracování fragmentů
  6. Operace na fragment

Per-Vertex Operation

Prvním a nejpřednějším krokem k vykreslení obrázku jsou geometrická data, která musí být převedena z jednoho souřadného systému do jiného souřadného systému.

Primitivní shromáždění

Vrcholy se v tomto konkrétním kroku shromažďují do dvojic po 2, 3 a více a primitiv se sestaví například do trojúhelníku.

Primitivní zpracování

Po sestavení primitivů se testuje, zda se na ně nevztahuje objem zobrazení. V případě, že tento konkrétní test neprojdou, budou v dalších krocích ignorováni. Tento test je znám jako Clipping.

Rasterizace

Pak se primitivy rozdělí na kousky menších jednotek a odpovídají počtu pixelů ve framebufferu. Každá z těchto menších jednotek je pak známá jako Fragmenty.

Zpracování fragmentů

Když je primitiv rastrován, pak se na geometrii použije barva nebo textura.

Operace na fragment

Nakonec jsou fragmenty podrobeny různým testům, jako jsou:

  • Test vlastnictví pixelů
  • Nůžková zkouška
  • Alfa test
  • Vzorníková zkouška
  • Hloubkový test

Z těchto šesti fází jsou dvě fáze řízeny programy, které se nazývají Shaders.

Shader, zkrátka, je malý program, který vyvíjíte pouze vy, který žije v GPU. Existuje speciální grafický jazyk známý jako OpenGL Shading Language (GLSL), ve kterém je shader napsán. Dvě důležité fáze v potrubí OpenGL, kde probíhá shader, se nazývají fáze „Per-Vertex Processing“ a „Per-Fragment Processing“.

Shader, který je zpracován ve fázi „Per-Vertex“, se nazývá Vertex Shader. Shader, který je zpracován ve fázi „Per-Fragment“, se nazývá Fragment Shader. Konečným a základním cílem vrcholného shaderu je poskytnout finální transformaci vrcholů znaku do vykreslovacího potrubí, zatímco cílem fragmentového shaderu je poskytnout zbarvovací a texturní údaje do každé ze záhlaví pixelů do framebufferu.

Když jsou data předávána potrubím OpenGL Rendering Pipeline, objeví se na obrazovce vašeho zařízení buď 3D nebo 2D model.

Program GL

Rady pro OpenGL v Androidu

V případě, že jste začátečník v OpenGL programátoru, nemuseli jste se s některými z níže uvedených bodů setkat. Níže uvádíme několik pokynů, o které byste se měli při používání OpenGL v systému Android starat. Jsou to běžné chyby. Vždy mějte na paměti.

  1. Nesprávné měřítko normálů pro osvětlení
  2. Špatné teselace poškozuje osvětlení
  3. Vždy si pamatujte svůj maticový režim
  4. Přetékání zásobníku projekčních matic
  5. Nenastavuje všechny úrovně mipmap
  6. Čtení zpětných jasových pixelů

Předpoklady pro OpenGL v Androidu

Níže jsou uvedeny předpoklady nutné pro OpenGL v Androidu.

Softwarové dovednosti

  • C, to znamená, programovací jazyk.
  • Znalost C ++ není nutná, ale je užitečná.
  • Použití různých knihoven, které mohou být statické nebo dynamické.

Matematika

  • Znalost vektorů ve 2D i 3D.
  • Matice
  • Základní matematické pojmy.

Toto jsou všechny hlavní a základní pojmy, které jsou nutné pro zahájení s OpenGL. Možná se budete muset naučit více matematických konceptů, ale až se dostanete na střední úroveň. Ale to zcela záleží na vás. Můžete předávat mnoho věcí pomocí různých knihoven.

Závěr: OpenGL v Androidu

OpenGL je proto plně funkční API, které je primitivní a umožňuje programátorům efektivně řešit a využívat grafický hardware. Velké množství knihoven na vysoké úrovni i aplikací používá OpenGL kvůli svému výkonu, snadnosti programování, rozšiřitelnosti a široké podpoře.

Doporučený článek

Toto byl průvodce OpenGL v Androidu. Zde jsme probrali proces práce a předpoklady OpenGL v Androidu. Další informace naleznete také v dalších navrhovaných článcích -

  1. WebGL vs. OpenGL
  2. Co je Cognos?
  3. Co je to software Jira?
  4. Kariéra v Azure

Kategorie: