Introduktion till OpenGL i Android

OpenGL står för Open Graphics Library. Det är i princip ett API som används av Android för att stödja högpresterande grafik som 2D- och 3D-grafik. Den övergripande användningen av OpenGL för överföring av data från CPU till GPU. Detta görs av OpenGL Objects. Det är ett grafiskt API över flera plattformar. I det här ämnet kommer vi att lära oss om OpenGL i Android.

OpenGL-objekt består av tillstånd och data och är de som hjälper till att överföra data mellan CPU och GPU. OpenGL ES är en populär specifikation av OpenGL API som är särskilt dedicerad för inbäddade system.

OpenGL i Android stöds av Android med hjälp av Native Development Kit (NDK) och dess ram-API. Grundklasserna i Android-ramverket hjälper dig att skapa och redigera grafik. OpenGL ES API som används i dessa klasser kallas GLSurfVaceiew.Renderer och GLSurfaceView. En god förståelse för att implementera dessa klasser är användbar för att använda OpenGL i din Android-applikation.

GLSurfaceView

Du kan rita och manipulera objekt i den här vyn. Det är lätt att använda den här klassen eftersom du kan skapa ett objekt med GLSurfaceView och lägga till en Renderer till den. Du kan fånga händelser på pekskärmen genom att utöka klassen GLSurfaceView för att implementera peklistlistarna.

GLSurfaceView.Renderer

GLSurfaceView.Renderer-gränssnittet innehåller metoder som krävs för att rita grafik i en GLSurfaceView. Implementeringen av detta gränssnitt ska tillhandahållas som en separat klass kopplad till GLSurfaceView-instansen med GLSurfaceView.setRenderer () .

Du måste implementera följande metoder för GLSurfaceView.Renderer-implementering av gränssnitt:

  • onSurfaceCreated () : Den här metoden kallas under skapandet av GLSurfaceView.
  • onDrawFrame () : Den här metoden kallas under varje ritning av GLSurfaceView.
  • onSurfaceChanged () : Den här metoden kallas när GLSurfaceView geometri ändras (storlek, orientering osv).

Hur fungerar OpenGL i Android?

Det finns flera typer av OpenGL-objekt. Till exempel ett Vertex-buffertobjekt som kan lagra vertikaler på ett tecken. Det andra exemplet är Texture som kan lagra bilddata.

Data såsom vertikaler, normaler och UV-koordinater som representerar egenskaperna hos nät laddas i ett Vertex buffertobjekt och skickas sedan till GPU för bearbetning. När det väl är i GPU, skulle dessa data gå igenom det som kallas OpenGL Rendering Pipeline.

De viktigaste uppgifterna som Rendering Pipeline ansvarar för är konverteringen av topparna till det högra koordinatsystemet, montering av vertikaler på ett tecken, tillämpning av färg eller textur och visning av karaktären på standard framebuffer som är skärmen.

Återgivningspipelineprocessen för OpenGL i Android består av sex steg som nedan:

  1. Per-vertex operation
  2. Primitiv montering
  3. Primitiv bearbetning
  4. rastrering
  5. Fragmentbearbetning
  6. Drift per fragment

Per-vertex operation

Det första och främsta steget för att återge en bild är geometri-data måste konverteras från ett koordinatsystem till ett annat koordinatsystem.

Primitiv montering

Hörnpunkterna samlas i par av 2, 3 och mer i detta specifika steg och det primitiva är sammansatt, till exempel, en triangel.

Primitiv bearbetning

När primitiven har monterats testas de för att kontrollera om de faller inom en View-Volume. Om de inte klarar det här testet skulle de ignoreras i ytterligare steg. Detta test kallas Clipping.

rastrering

Därefter delas Primitives upp i bitar av mindre enheter och motsvarar pixlarna i framebuffern. Var och en av dessa mindre enheter kallas sedan fragment.

Fragmentbearbetning

När primitiv har rasteriserats appliceras färg eller struktur på geometrien.

Drift per fragment

Slutligen överlämnas fragmenten till olika test såsom:

  • Pixel-ägartest
  • Saxtest
  • Alfatest
  • Stenciltest
  • Djupstest

Från dessa sex steg kontrolleras två steg av program som kallas Shaders.

Shader, kort sagt, är ett litet program som bara är utvecklat av dig som bor i GPU. Det finns ett speciellt grafikspråk som kallas OpenGL Shading Language (GLSL) där en shader skrivs. De två viktiga stadierna i OpenGL-pipeline där en skuggning äger rum kallas "Per-Vertex Processing" och "Per-Fragment Processing".

Shader som bearbetas i scenen "Per-Vertex" kallas Vertex Shader. Shader som bearbetas i scenen "Per-Fragment" kallas Fragment Shader. Det ultimata och grundläggande målet med toppskärmaren är att ge den slutliga omvandlingen av karaktärens hörn till renderingsrörledningen medan målet med fragmentskuggaren är att ge färg- och texturdata till var och en av pixlarnas rubriker till framebuffern.

När data skickas genom OpenGL Rendering Pipeline kommer antingen 3D- eller 2D-modellen att visas på skärmen på din enhet.

GL-program

Råd för OpenGL i Android

Om du är nybörjare i OpenGL-programmerare kanske några av dessa punkter nedan inte har stött på dig ännu. Nedan följer några riktlinjer för dig att ta hand om när du använder OpenGL i Android. Det är vanliga misstag. Så alltid ha dessa i åtanke.

  1. Felaktig skalning av normaler för belysning
  2. Dålig Tessellation gör ont belysning
  3. Kom alltid ihåg ditt Matrix-läge
  4. Överflödande av projektionsmatrisbunten
  5. Ställer inte in alla Mipmap-nivåer
  6. Läser tillbaka luminanspixlar

Förkrav för OpenGL i Android

Nedan följer den förutsättning som krävs för OpenGL i Android.

Programvarufärdigheter

  • C, det vill säga programmeringsspråk.
  • C ++ -kunskap är inte nödvändigt men hjälper till.
  • Användning av olika bibliotek som kan vara antingen statiska eller dynamiska.

Matematik

  • Kunskap om vektorer i både 2D och 3D.
  • matriser
  • Grundläggande matematikbegrepp.

Dessa är alla huvud- och grundläggande koncept som behövs för att börja med OpenGL. Du kanske behöver lära dig mer matematikbegrepp men efter att du har kommit till mellannivån. Men det beror helt på dig. Du kan gå över många saker med hjälp av olika bibliotek.

Slutsats: OpenGL i Android

Därför är OpenGL ett helt funktionellt API som är primitivt och gör det möjligt för programmeraren att effektivt adressera och dra nytta av grafikhårdvara. Ett stort antal bibliotek på hög nivå såväl som applikationer använder OpenGL på grund av dess prestanda, programmeringslätthet, utdragbarhet och utbrett stöd.

Rekommenderad artikel

Detta har varit en guide till OpenGL i Android. Här har vi diskuterat processen för att arbeta och förutsättningarna för OpenGL i Android. Du kan också gå igenom våra andra föreslagna artiklar för att lära dig mer -

  1. WebGL vs OpenGL
  2. Vad är Cognos?
  3. Vad är Jira-programvara?
  4. Karriär i Azure

Kategori: