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:
- Per-vertex operation
- Primitiv samling
- Primitiv behandling
- rasterisering
- Fragmentbehandling
- 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.
- Forkert skalering af normaler til belysning
- Dårlig Tessellation gør ondt for belysning
- Husk altid din matrixtilstand
- Overløb af projektionsmatrixstakken
- Indstiller ikke alle Mipmap-niveauer
- 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 -
- WebGL vs OpenGL
- Hvad er Cognos?
- Hvad er Jira-software?
- Karriere i Azure