Introduzione a OpenGL in Android

OpenGL è l'acronimo di Open Graphics Library. È fondamentalmente un'API utilizzata da Android per supportare grafica ad alte prestazioni come grafica 2D e 3D. L'uso complessivo di OpenGL per il trasferimento dei dati dalla CPU alla GPU. Questo viene fatto da OpenGL Objects. È un'API grafica multipiattaforma. In questo argomento, impareremo a conoscere OpenGL in Android.

Gli oggetti OpenGL sono costituiti da stati e dati e sono quelli che aiutano a trasmettere dati tra CPU e GPU. OpenGL ES è una specifica popolare dell'API OpenGL dedicata in particolare ai sistemi embedded.

OpenGL in Android è supportato da Android utilizzando Native Development Kit (NDK) e la sua API framework. Le classi di base nel framework Android ti aiutano a creare e modificare la grafica. L'API OpenGL ES utilizzata con queste classi si chiama GLSurfVaceiew.Renderer e GLSurfaceView. Una buona conoscenza dell'implementazione di queste classi è utile nell'uso di OpenGL nell'applicazione Android.

GLSurfaceView

È possibile disegnare e manipolare oggetti in questa vista. È facile usare questa classe in quanto puoi creare un oggetto di GLSurfaceView e aggiungere un Renderer ad esso. È possibile acquisire eventi touchscreen estendendo la classe GLSurfaceView per implementare gli ascoltatori touch.

GLSurfaceView.Renderer

L'interfaccia GLSurfaceView.Renderer contiene i metodi necessari per disegnare la grafica in un GLSurfaceView. L'implementazione di questa interfaccia dovrebbe essere fornita come una classe separata collegata all'istanza GLSurfaceView usando GLSurfaceView.setRenderer () .

È necessario implementare i seguenti metodi per l'implementazione dell'interfaccia GLSurfaceView.Renderer:

  • onSurfaceCreated () : questo metodo viene chiamato durante la creazione di GLSurfaceView.
  • onDrawFrame () : questo metodo viene chiamato durante ogni ridisegno di GLSurfaceView.
  • onSurfaceChanged () : questo metodo viene chiamato quando cambia la geometria GLSurfaceView (dimensioni, orientamento, ecc.).

Come funziona OpenGL in Android?

Esistono diversi tipi di oggetti OpenGL. Ad esempio, un oggetto buffer vertici in grado di memorizzare vertici di un carattere. Il secondo esempio è Texture che può memorizzare dati di immagine.

Dati come vertici, normali e coordinate UV che rappresentano le caratteristiche della mesh vengono caricati in un oggetto buffer vertici e quindi inviati alla GPU per l'elaborazione. Una volta che si trovano nella GPU, questi dati passerebbero attraverso la pipeline di rendering OpenGL.

Le attività principali di cui è responsabile Rendering Pipeline sono la conversione dei vertici nel giusto sistema di coordinate, l'assemblaggio dei vertici di un personaggio, l'applicazione del colore o della trama e la visualizzazione del personaggio sul framebuffer predefinito che è lo schermo.

Il processo di rendering della pipeline di OpenGL in Android è costituito da sei fasi come di seguito:

  1. Operazione per vertice
  2. Assemblea primitiva
  3. Elaborazione primitiva
  4. rasterizzazione
  5. Elaborazione di frammenti
  6. Operazione per frammento

Operazione per vertice

Il primo e principale passo per il rendering di un'immagine è che i dati della geometria devono essere convertiti da un sistema di coordinate in un altro sistema di coordinate.

Assemblea primitiva

I vertici sono raccolti in coppie di 2, 3 e più in questo particolare passaggio e la primitiva è assemblata, ad esempio, un triangolo.

Elaborazione primitiva

Quando i primitivi sono stati assemblati, vengono testati per verificare se rientrano in un volume di visualizzazione. Nel caso in cui non superino questo particolare test, verrebbero ignorati in ulteriori passaggi. Questo test è noto come ritaglio.

rasterizzazione

Quindi i Primitivi sono suddivisi in blocchi di unità più piccole e corrispondenti a quelli dei pixel nel framebuffer. Ciascuna di queste unità più piccole è quindi conosciuta come Frammenti.

Elaborazione di frammenti

Quando la primitiva è stata rasterizzata, il colore o la trama vengono applicati alla geometria.

Operazione per frammento

Infine, i frammenti vengono sottoposti a vari test come:

  • Test di proprietà dei pixel
  • Test a forbice
  • Alpha test
  • Test dello stencil
  • Test di profondità

Da queste sei fasi, due fasi sono controllate da programmi chiamati Shader.

Shader, in breve, è un piccolo programma sviluppato solo da te che vive nella GPU. Esiste un linguaggio grafico speciale noto come OpenGL Shading Language (GLSL) in cui è scritto uno shader. Le due fasi importanti della pipeline OpenGL in cui si svolge uno shader sono chiamate fasi "Elaborazione per vertice" e "Elaborazione per frammento".

Lo shader che viene elaborato nella fase "Per-Vertex" è noto come Vertex Shader. Lo shader che viene elaborato nella fase "Per-Fragment" è noto come Fragment Shader. L'obiettivo finale e di base dello shader di vertice è quello di fornire la trasformazione finale dei vertici del personaggio alla pipeline di rendering, mentre l'obiettivo dello shader di frammento è quello di fornire i dati di colorazione e texture a ciascuna delle intestazioni di pixel al framebuffer.

Quando i dati vengono passati attraverso la pipeline di rendering OpenGL, sullo schermo del dispositivo appariranno il modello 3D o 2D.

Programma GL

Consigli per OpenGL in Android

Nel caso in cui tu sia un principiante nel programmatore OpenGL, alcuni di questi punti di seguito potrebbero non essere stati ancora incontrati da te. Di seguito sono riportate alcune linee guida da seguire durante l'utilizzo di OpenGL in Android. Sono errori comuni. Quindi tienili sempre a mente.

  1. Ridimensionamento improprio dei normali per l'illuminazione
  2. La scarsa tessellazione fa male all'illuminazione
  3. Ricorda sempre la tua modalità Matrix
  4. Straripamento della pila di matrici di proiezione
  5. Non impostare tutti i livelli Mipmap
  6. Lettura indietro di pixel di luminanza

Prerequisiti per OpenGL in Android

Di seguito sono riportati i prerequisiti richiesti per OpenGL in Android.

Competenze software

  • C, cioè linguaggio di programmazione.
  • La conoscenza del C ++ non è necessaria ma è utile.
  • Utilizzo di varie librerie che possono essere statiche o dinamiche.

Matematica

  • Conoscenza dei vettori sia in 2D che in 3D.
  • matrici
  • Concetti matematici di livello base.

Questi sono tutti concetti principali e di base necessari per iniziare con OpenGL. Potrebbe essere necessario imparare alcuni concetti matematici, ma dopo aver raggiunto il livello intermedio. Ma questo dipende totalmente da te. Puoi passare molte cose con l'aiuto di diverse librerie.

Conclusione: OpenGL in Android

Pertanto, OpenGL è un'API completamente funzionale di livello primitivo e che consente al programmatore di indirizzare in modo efficace e sfruttare l'hardware grafico. Un gran numero di librerie di alto livello e applicazioni usano OpenGL per le sue prestazioni, facilità di programmazione, estensibilità e supporto diffuso.

Articolo raccomandato

Questa è stata una guida per OpenGL in Android. Qui abbiamo discusso del processo di funzionamento e dei prerequisiti di OpenGL in Android. Puoi anche consultare i nostri altri articoli suggeriti per saperne di più -

  1. WebGL vs OpenGL
  2. Che cos'è Cognos?
  3. Cos'è il software Jira?
  4. Carriera in Azure

Categoria: