OpenGL i Android - Vejledning i hvordan OpenGL fungerer?

Indholdsfortegnelse:

Anonim

Introduktion til OpenGL i Android

OpenGL står for Open Graphics Library. Det er dybest set en API, der bruges af Android til at understøtte højtydende grafik som 2D- og 3D-grafik. Den overordnede anvendelse af OpenGL til overførsel af data fra CPU'en til GPU'en. Dette gøres af OpenGL Objects. Det er et tvær-platform grafisk API. I dette emne skal vi lære om OpenGL i Android.

OpenGL-objekter består af tilstande og data og er dem, der hjælper med at overføre data mellem CPU og GPU. OpenGL ES er en populær specifikation af OpenGL API, som er specielt dedikeret til indlejrede systemer.

OpenGL i Android understøttes af Android ved hjælp af Native Development Kit (NDK) og dets ramme-API. Grundlæggende klasser i Android-rammen hjælper dig med at oprette og redigere grafik. OpenGL ES API, der bruges med disse klasser, kaldes GLSurfVaceiew.Renderer og GLSurfaceView. En god forståelse af implementering af disse klasser er nyttigt ved brug af OpenGL i din Android-applikation.

GLSurfaceView

Du kan tegne og manipulere objekter i denne visning. Det er let at bruge denne klasse, da du kan oprette et objekt med GLSurfaceView og tilføje en Renderer til den. Du kan fange begivenheder på berøringsskærmen ved at udvide klassen GLSurfaceView til at implementere touchlytterne.

GLSurfaceView.Renderer

GLSurfaceView.Renderer-grænsefladen indeholder metoder, der er nødvendige for at tegne grafik i en GLSurfaceView. Implementeringen af ​​denne grænseflade skal leveres som en separat klasse knyttet til GLSurfaceView-forekomsten ved hjælp af GLSurfaceView.setRenderer () .

Du skal implementere følgende metoder til GLSurfaceView.Renderer-implementering af interface:

  • onSurfaceCreated () : Denne metode kaldes under oprettelsen af ​​GLSurfaceView.
  • onDrawFrame () : Denne metode kaldes under hver tegning af GLSurfaceView.
  • onSurfaceChanged () : Denne metode kaldes, når GLSurfaceView geometri ændres (størrelse, retning osv.).

Hvordan fungerer OpenGL i Android?

Der findes flere typer OpenGL-objekter. For eksempel et Vertex Buffer-objekt, der kan gemme vertikater af et tegn. Det andet eksempel er Tekstur, der kan gemme billeddata.

Data såsom knudepunkter, normaler og UV-koordinater, der repræsenterer egenskaberne ved mesh, indlæses i et Vertex Buffer Object og sendes derefter til GPU til behandling. Når det er i GPU, vil disse data gå igennem, det er kendt som OpenGL Rendering Pipeline.

De vigtigste opgaver, som Rendering Pipeline er ansvarlig for, er konvertering af vertices til det rigtige koordinatsystem, samling af vertices af et tegn, anvendelse af farve eller tekstur og visning af tegnet på standard framebuffer, som er skærmen.

Fremstillingspipelineprocessen af ​​OpenGL i Android består af seks trin som nedenfor:

  1. Per-vertex operation
  2. Primitiv samling
  3. Primitiv behandling
  4. rasterisering
  5. Fragmentbehandling
  6. Per-fragment operation

Per-vertex operation

Det første og vigtigste trin til gengivelse af et billede er geometri data skal konverteres fra et koordinatsystem til et andet koordinatsystem.

Primitiv samling

Højdepunkterne opsamles i par på 2, 3og mere i dette særlige trin, og det primitive samles, for eksempel en trekant.

Primitiv behandling

Når primitiverne er samlet, testes de for at kontrollere, om de falder inden for et synsvolumen. I tilfælde af at de ikke bestod denne bestemte test, ville de blive ignoreret i yderligere trin. Denne test kaldes Clipping.

rasterisering

Derefter opdeles primitiver i dele af mindre enheder og svarer til pixel i framebufferen. Hver af disse mindre enheder kaldes derefter fragmenter.

Fragmentbehandling

Når primitiv er blevet rasteret, påføres derefter farve eller tekstur på geometrien.

Per-fragment operation

Til sidst udsendes fragmenterne til forskellige tests, såsom:

  • Pixel-ejerskabstest
  • Sakse test
  • Alfa-test
  • Stencil test
  • Dybde test

Fra disse seks stadier kontrolleres to faser af programmer, der kaldes Shaders.

Shader er kort sagt et lille program, der kun er udviklet af dig, der bor i GPU'en. Der er et specielt grafikksprog kaldet OpenGL Shading Language (GLSL), hvor en shader er skrevet. De to vigtige faser i OpenGL-rørledningen, hvor en shader finder sted, kaldes ”Per-Vertex Processing” og “Per-Fragment Processing”.

Shader, der behandles i “Per-Vertex” -stadiet er kendt som Vertex Shader. Shader, der behandles i “Per-Fragment” -stadiet er kendt som Fragment Shader. Det ultimative og grundlæggende mål med toppunktskyggeren er at give den endelige omdannelse af vertikuer i karakteren til gengivelsesrørledningen, mens målet med fragmentskyggeren er at give farve- og teksturdata til hver af pixeloverskrifterne til framebufferen.

Når data sendes gennem OpenGL Rendering Pipeline, vises enten 3D- eller 2D-modellen på skærmen på din enhed.

GL-program

Rådgivning til OpenGL i Android

I tilfælde af at du er nybegynder i OpenGL-programmerer, er nogle af disse punkter muligvis endnu ikke blevet stødt på dig. Herunder er nogle retningslinjer, som du kan tage sig af, mens du bruger OpenGL i Android. Det er almindelige fejl. Så husk altid disse.

  1. Forkert skalering af normaler til belysning
  2. Dårlig Tessellation gør ondt for belysning
  3. Husk altid din matrixtilstand
  4. Overløb af projektionsmatrixstakken
  5. Indstiller ikke alle Mipmap-niveauer
  6. Læse tilbage lysstyrke pixel

Forudsætninger for OpenGL i Android

Nedenfor er den forudsætning, der kræves for OpenGL i Android.

Softwarefærdigheder

  • C, det vil sige programmeringssprog.
  • C ++ viden er ikke nødvendig, men er nyttig.
  • Brug af forskellige biblioteker, der kan være enten statisk eller dynamisk.

Matematik

  • Kendskab til vektorer i både 2D og 3D.
  • Matricer
  • Grundlæggende matematikbegreber.

Dette er alle vigtigste og grundlæggende koncepter, der er nødvendige for at starte med OpenGL. Det kan være nødvendigt, at du lærer nogle flere matematiske koncepter, men når du kommer til mellemniveauet. Men det afhænger helt af dig. Du kan videregive mange ting ved hjælp af forskellige biblioteker.

Konklusion: OpenGL i Android

Derfor er OpenGL et fuldstændigt funktionelt API, der er primitivt og giver programmereren mulighed for effektivt at adressere og drage fordel af grafisk hardware. Et stort antal biblioteker på højt niveau såvel som applikationer bruger OpenGL på grund af dens ydeevne, programmeringslethed, udvidelsesmuligheder såvel som udbredt support.

Anbefalet artikel

Dette har været en guide til OpenGL i Android. Her har vi drøftet processen med at arbejde og forudsætningerne for OpenGL i Android. Du kan også gennemgå vores andre foreslåede artikler for at lære mere -

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