Introduksjon til OpenGL i Android

OpenGL står for Open Graphics Library. Det er i utgangspunktet et API som brukes av android for å støtte høyytelsesgrafikk som 2D- og 3D-grafikk. Den generelle bruken av OpenGL for overføring av data fra CPU til GPU. Dette gjøres av OpenGL Objects. Det er et grafisk API på tvers av plattformer. I dette emnet skal vi lære om OpenGL i Android.

OpenGL-objekter består av tilstander og data, og er de som hjelper til med å overføre data mellom CPU og GPU. OpenGL ES er en populær spesifikasjon av OpenGL API som er spesielt dedikert for innebygde systemer.

OpenGL i Android støttes av Android ved å bruke Native Development Kit (NDK) og dets ramme-API. Grunnleggende klasser i Android-rammeverket hjelper deg å lage og redigere grafikk. OpenGL ES API som brukes med disse klassene kalles GLSurfVaceiew.Renderer og GLSurfaceView. En god forståelse av implementering av disse klassene er nyttig når du bruker OpenGL i Android-applikasjonen din.

GLSurfaceView

Du kan tegne og manipulere objekter i denne visningen. Det er enkelt å bruke denne klassen da du kan lage et objekt av GLSurfaceView og legge til en gjengivelse i den. Du kan fange hendelser på berøringsskjermen ved å utvide GLSurfaceView-klassen for å implementere berøringslytterne.

GLSurfaceView.Renderer

GLSurfaceView.Renderer-grensesnittet inneholder metoder som er nødvendige for å tegne grafikk i en GLSurfaceView. Implementeringen av dette grensesnittet bør gis som en egen klasse knyttet til GLSurfaceView-forekomsten ved å bruke GLSurfaceView.setRenderer () .

Du må implementere følgende metoder for implementering av GLSurfaceView.Renderer-grensesnitt:

  • onSurfaceCreated () : Denne metoden kalles under opprettelsen av GLSurfaceView.
  • onDrawFrame () : Denne metoden kalles under hver tegning av GLSurfaceView.
  • onSurfaceChanged () : Denne metoden kalles når GLSurfaceView geometri endres (størrelse, retning osv.).

Hvordan fungerer OpenGL i Android?

Det finnes flere typer OpenGL-objekter. For eksempel et Vertex Buffer-objekt som kan lagre vertekser av et tegn. Det andre eksemplet er Tekstur som kan lagre bildedata.

Data som toppunkt, normaler og UV-koordinater som representerer egenskapene til netting blir lastet inn i et Vertex Buffer Object og deretter sendt til GPU for behandling. Når den er i GPU, vil disse dataene gå gjennom det som kalles OpenGL Rendering Pipeline.

Hovedoppgavene som Rendering Pipeline er ansvarlig for er konvertering av toppunktene til riktig koordinatsystem, montering av toppunkt av et tegn, anvendelse av farge eller tekstur og visning av tegnet på standard framebuffer som er skjermen.

Gjengivelsesrørledningsprosessen til OpenGL i Android består av seks trinn som nedenfor:

  1. Per-vertex operasjon
  2. Primitiv forsamling
  3. Primitiv prosessering
  4. rastrering
  5. Fragmentbehandling
  6. Per-fragment operasjon

Per-vertex operasjon

Det første og fremst trinnet for å gjengi et bilde er geometri data må konverteres fra ett koordinatsystem til et annet koordinatsystem.

Primitiv forsamling

Hodepunktene samles i par på 2, 3og mer i dette trinnet, og primitivet er satt sammen, for eksempel en trekant.

Primitiv prosessering

Når primitivene er satt sammen, testes de for å sjekke om de faller innenfor et visningsvolum. I tilfelle de ikke bestå denne testen, vil de bli ignorert i ytterligere trinn. Denne testen er kjent som Clipping.

rastrering

Deretter brytes Primitives ned i biter av mindre enheter og tilsvarer det for piksler i framebufferen. Hver av disse mindre enhetene er da kjent som fragmenter.

Fragmentbehandling

Når primitiv har blitt rasterisert, blir farge eller tekstur påført geometrien.

Per-fragment operasjon

Til slutt blir fragmentene sendt til forskjellige tester som:

  • Pixel-eiertest
  • Saksestest
  • Alfa-test
  • Sjablongprøve
  • Dybde test

Fra disse seks stadiene blir to stadier kontrollert av programmer som kalles Shaders.

Shader, kort sagt, er et lite program som bare er utviklet av deg som bor i GPU. Det er et spesielt grafikkspråk kjent som OpenGL Shading Language (GLSL) der en shader er skrevet. De to viktige trinnene i OpenGL-rørledningen der en shader finner sted kalles “Per-Vertex Processing” og “Per-Fragment Processing”.

Skyggeleggeren som behandles i "Per-Vertex" -trinnet er kjent som Vertex Shader. Shader som blir behandlet i “Per-Fragment” -trinnet er kjent som Fragment Shader. Det endelige og grunnleggende målet med toppunktet skyggelegger er å gi den endelige transformasjonen av verteksene av karakteren til gjengivelsesrørledningen, mens målet med fragmentskyggeren er å gi fargeleggings- og teksturdataene til hver av pikseloverskriftene til framebufferen.

Når data sendes gjennom OpenGL Rendering Pipeline, vises enten 3D- eller 2D-modellen på skjermen på enheten din.

GL-program

Råd for OpenGL i Android

Hvis du er nybegynner i OpenGL-programmerer, kan det hende at noen av disse punktene nedenfor ikke har blitt møtt av deg ennå. Nedenfor er noen retningslinjer for deg å ta vare på mens du bruker OpenGL i Android. Det er vanlige feil. Så husk alltid disse.

  1. Feil skalering av normaler for belysning
  2. Dårlig Tessellation Hurts Lighting
  3. Husk alltid matrismodus
  4. Overflyt av projeksjonsmatrisestabelen
  5. Angir ikke alle Mipmap-nivåene
  6. Leser tilbake lysstyrkepiksler

Forutsetninger for OpenGL i Android

Nedenfor er forutsetningen som kreves for OpenGL i Android.

Programvare ferdigheter

  • C, det vil si programmeringsspråk.
  • C ++ kunnskap er ikke nødvendig, men er nyttig.
  • Bruk av forskjellige biblioteker som kan være statisk eller dynamisk.

Matematikk

  • Kunnskap om vektorer i både 2D og 3D.
  • matriser
  • Grunnleggende matematikkbegreper.

Dette er alle hoved- og grunnleggende konsepter som er nødvendige for å starte med OpenGL. Du må kanskje lære noen flere matematikkbegreper, men etter at du har kommet til mellomnivået. Men det kommer helt an på deg. Du kan passere mange ting ved hjelp av forskjellige biblioteker.

Konklusjon: OpenGL i Android

Derfor er OpenGL fullstendig funksjonell API som er primitivt nivå og lar programmereren effektivt adressere og dra nytte av grafisk maskinvare. Et stort antall biblioteker på høyt nivå og applikasjoner bruker OpenGL på grunn av ytelse, programmeringsvennlighet, utvidbarhet og bred støtte.

Anbefalt artikkel

Dette har vært en guide til OpenGL i Android. Her har vi diskutert prosessen med å jobbe og forutsetningene til OpenGL i Android. Du kan også gå gjennom andre foreslåtte artikler for å lære mer -

  1. WebGL vs OpenGL
  2. Hva er Cognos?
  3. Hva er Jira-programvare?
  4. Karriere i Azure