Inleiding tot OpenGL in Android

OpenGL staat voor Open Graphics Library. Het is eigenlijk een API die door de Android wordt gebruikt om krachtige grafische afbeeldingen zoals 2D- en 3D-afbeeldingen te ondersteunen. Het algemene gebruik van OpenGL voor het overbrengen van de gegevens van de CPU naar de GPU. Dit wordt gedaan door OpenGL Objects. Het is een platformoverschrijdende grafische API. In dit onderwerp gaan we meer te weten komen over OpenGL in Android.

OpenGL-objecten bestaan ​​uit toestanden en gegevens en helpen gegevens over te brengen tussen de CPU en GPU. De OpenGL ES is een populaire specificatie van de OpenGL API die speciaal is bedoeld voor ingebedde systemen.

OpenGL in Android wordt ondersteund door Android met behulp van de Native Development Kit (NDK) en de framework-API. De basisklassen in het Android-framework helpen u bij het maken en bewerken van afbeeldingen. De OpenGL ES API die met deze klassen wordt gebruikt, wordt GLSurfVaceiew.Renderer en GLSurfaceView genoemd. Een goed begrip van de implementatie van deze klassen is nuttig bij het gebruik van OpenGL in uw Android-applicatie.

GLSurfaceView

In deze weergave kunt u objecten tekenen en manipuleren. Het is eenvoudig om deze klasse te gebruiken, omdat u een object van GLSurfaceView kunt maken en er een Renderer aan kunt toevoegen. U kunt gebeurtenissen op het touchscreen vastleggen door de klasse GLSurfaceView uit te breiden om de aanrakingsluisteraars te implementeren.

GLSurfaceView.Renderer

De GLSurfaceView.Renderer-interface bevat methoden die vereist zijn voor het tekenen van afbeeldingen in een GLSurfaceView. De implementatie van deze interface moet worden geleverd als een afzonderlijke klasse die is gekoppeld aan de GLSurfaceView-instantie met behulp van GLSurfaceView.setRenderer () .

U moet de volgende methoden implementeren voor de implementatie van de GLSurfaceView.Renderer-interface:

  • onSurfaceCreated () : deze methode wordt aangeroepen tijdens het maken van de GLSurfaceView.
  • onDrawFrame () : deze methode wordt tijdens elke hertekening van de GLSurfaceView aangeroepen.
  • onSurfaceChanged () : deze methode wordt aangeroepen wanneer de GLSurfaceView-geometrie verandert (grootte, oriëntatie, enz.).

Hoe werkt OpenGL in Android?

Er bestaan ​​verschillende soorten OpenGL-objecten. Bijvoorbeeld een Vertex Buffer-object dat hoekpunten van een personage kan opslaan. Het tweede voorbeeld is Textuur die afbeeldingsgegevens kan opslaan.

Gegevens zoals hoekpunten, normalen en UV-coördinaten die de eigenschappen van mesh vertegenwoordigen, worden in een Vertex Buffer-object geladen en vervolgens voor verwerking naar de GPU verzonden. Zodra het zich in de GPU bevindt, zouden deze gegevens doorlopen die bekend staan ​​als de OpenGL Rendering Pipeline.

De belangrijkste taken waarvoor Rendering Pipeline verantwoordelijk is, zijn de conversie van de hoekpunten naar het juiste coördinatensysteem, het samenstellen van hoekpunten van een teken, het aanbrengen van kleur of textuur en het weergeven van het teken op de standaard framebuffer, het scherm.

Het rendering pipeline-proces van OpenGL in Android bestaat uit zes fasen, zoals hieronder:

  1. Per-Vertex operatie
  2. Primitieve vergadering
  3. Primitieve verwerking
  4. rasteren
  5. Fragmentverwerking
  6. Bewerking per fragment

Per-Vertex operatie

De eerste en belangrijkste stap om een ​​afbeelding weer te geven, is dat geometriegegevens moeten worden omgezet van het ene coördinatensysteem naar een ander coördinatensysteem.

Primitieve vergadering

De hoekpunten worden verzameld in paren van 2, 3 en meer in deze specifieke stap en de primitieve wordt geassembleerd, bijvoorbeeld een driehoek.

Primitieve verwerking

Wanneer de primitieven zijn geassembleerd, worden ze getest om te controleren of ze binnen een View-Volume vallen. Als ze deze specifieke test niet doorstaan, worden ze in verdere stappen genegeerd. Deze test staat bekend als Clipping.

rasteren

Vervolgens worden Primitieven opgedeeld in brokken van kleinere eenheden en corresponderend met die van pixels in de framebuffer. Elk van deze kleinere eenheden wordt vervolgens Fragmenten genoemd.

Fragmentverwerking

Wanneer primitief is gerasterd, wordt kleur of textuur op de geometrie toegepast.

Bewerking per fragment

Ten slotte worden de fragmenten onderworpen aan verschillende tests, zoals:

  • Pixel Ownership-test
  • Schaartest
  • Alpha-test
  • Stenciltest
  • Dieptetest

Van deze zes fasen worden twee fasen bestuurd door programma's die Shaders worden genoemd.

Kortom, Shader is een klein programma dat alleen door u wordt ontwikkeld en dat in de GPU leeft. Er is een speciale grafische taal bekend als OpenGL Shading Language (GLSL) waarin een arcering wordt geschreven. De twee belangrijke fasen in de OpenGL-pijplijn waar een arcering plaatsvindt, worden de fasen "Per-Vertex Processing" en "Per-Fragment Processing" genoemd.

De arcering die wordt verwerkt in de fase “Per-Vertex” staat bekend als Vertex Shader. De arcering die wordt verwerkt in de fase "Per-fragment" staat bekend als Fragment Shader. Het uiteindelijke en fundamentele doel van de hoekpuntshader is om de laatste transformatie van hoekpunten van het personage aan de renderingpijplijn te geven, terwijl het doel van de fragment-shader is om de kleur- en textuurgegevens aan elk van de pixelkopjes aan de framebuffer te geven.

Wanneer gegevens door de OpenGL-weergavepijplijn worden doorgegeven, verschijnt het 3D- of 2D-model op het scherm van uw apparaat.

GL-programma

Advies voor OpenGL in Android

Als u een beginner bent in OpenGL-programmeur, zijn sommige van deze punten hieronder nog niet door u tegengekomen. Hieronder staan ​​enkele richtlijnen waar u voor moet zorgen tijdens het gebruik van OpenGL in Android. Het zijn veel voorkomende fouten. Houd deze dus altijd in gedachten.

  1. Onjuiste schaalverdeling van normalen voor verlichting
  2. Slecht mozaïekbeeld doet pijn aan verlichting
  3. Onthoud altijd uw matrixmodus
  4. Overloop van de Projection Matrix Stack
  5. Niet alle Mipmap-niveaus instellen
  6. Luminantiepixels teruglezen

Vereisten voor OpenGL in Android

Hieronder vindt u de vereiste vereiste voor OpenGL in Android.

Software vaardigheden

  • C, dat wil zeggen programmeertaal.
  • C ++ kennis is niet noodzakelijk maar is nuttig.
  • Gebruik van verschillende bibliotheken die statisch of dynamisch kunnen zijn.

Wiskunde

  • Kennis van vectoren in zowel 2D als 3D.
  • matrices
  • Basisniveau wiskundeconcepten.

Dit zijn allemaal hoofd- en basisconcepten die nodig zijn om met OpenGL te beginnen. Misschien moet je wat meer wiskundige concepten leren, maar nadat je op het intermediaire niveau bent gekomen. Maar dat hangt helemaal van jou af. U kunt veel dingen overslaan met behulp van verschillende bibliotheken.

Conclusie: OpenGL in Android

Daarom is OpenGL een volledig functionele API die op primitief niveau is en waarmee de programmeur effectief grafische hardware kan aanspreken en er voordeel uit kan halen. Een groot aantal bibliotheken op hoog niveau evenals toepassingen gebruiken OpenGL vanwege zijn prestaties, programmeergemak, uitbreidbaarheid en brede ondersteuning.

Aanbevolen artikel

Dit is een gids voor OpenGL in Android geweest. Hier hebben we het werkproces en de vereisten voor OpenGL in Android besproken. U kunt ook onze andere voorgestelde artikelen doornemen voor meer informatie -

  1. WebGL versus OpenGL
  2. Wat is Cognos?
  3. Wat is Jira Software?
  4. Carrière in Azure