Introducción a OpenGL en Android

OpenGL significa Open Graphics Library. Básicamente es una API utilizada por Android para admitir gráficos de alto rendimiento como gráficos 2D y 3D. El uso general de OpenGL para transferir los datos de la CPU a la GPU. Esto es hecho por OpenGL Objects. Es una API de gráficos multiplataforma. En este tema, vamos a aprender sobre OpenGL en Android.

Los objetos OpenGL están formados por estados y datos y son los que ayudan a transmitir datos entre la CPU y la GPU. OpenGL ES es una especificación popular de OpenGL API que está especialmente dedicada a los sistemas integrados.

OpenGL en Android es compatible con Android mediante el Kit de desarrollo nativo (NDK) y su API marco. Las clases fundamentales en el marco de Android te ayudan a crear y editar gráficos. La API de OpenGL ES utilizada con estas clases se llama GLSurfVaceiew.Renderer y GLSurfaceView. Una buena comprensión de la implementación de estas clases es útil para usar OpenGL en su aplicación de Android.

GLSurfaceView

Puede dibujar y manipular objetos en esta vista. Es fácil usar esta clase, ya que puede crear un objeto de GLSurfaceView y agregarle un Renderer. Puede capturar eventos de pantalla táctil ampliando la clase GLSurfaceView para implementar los oyentes táctiles.

GLSurfaceView.Renderer

La interfaz GLSurfaceView.Renderer contiene métodos necesarios para dibujar gráficos en un GLSurfaceView. La implementación de esta interfaz debe proporcionarse como una clase separada adjunta a la instancia GLSurfaceView utilizando GLSurfaceView.setRenderer () .

Debe implementar los siguientes métodos para la implementación de la interfaz GLSurfaceView.Renderer:

  • onSurfaceCreated () : este método se llama durante la creación de GLSurfaceView.
  • onDrawFrame () : este método se llama durante cada redibujo de GLSurfaceView.
  • onSurfaceChanged () : este método se llama cuando cambia la geometría GLSurfaceView (tamaño, orientación, etc.).

¿Cómo funciona OpenGL en Android?

Existen varios tipos de objetos OpenGL. Por ejemplo, un objeto búfer de vértices que puede almacenar vértices de un personaje. El segundo ejemplo es Texture que puede almacenar datos de imágenes.

Los datos como los vértices, las normales y las coordenadas UV que representan las características de la malla se cargan en un objeto búfer de vértices y luego se envían a la GPU para su procesamiento. Una vez que está en la GPU, estos datos pasarán por lo que se conoce como la canalización de representación de OpenGL.

Las principales tareas de las que es responsable Rendering Pipeline son la conversión de los vértices al sistema de coordenadas correcto, el ensamblaje de los vértices de un personaje, la aplicación de color o textura y la visualización del personaje en el framebuffer predeterminado que es la pantalla.

El proceso de canalización de renderizado de OpenGL en Android consta de seis etapas de la siguiente manera:

  1. Operación por vértice
  2. Asamblea primitiva
  3. Procesamiento primitivo
  4. Rasterización
  5. Procesamiento de fragmentos
  6. Operación por fragmento

Operación por vértice

El primer y más importante paso para representar una imagen es que los datos de geometría deben convertirse de un sistema de coordenadas a otro sistema de coordenadas.

Asamblea primitiva

Los vértices se recogen en pares de 2, 3 y más en este paso en particular y el primitivo se ensambla, por ejemplo, un triángulo.

Procesamiento primitivo

Cuando se han ensamblado las primitivas, se prueban para verificar si están dentro de un volumen de visualización. En caso de que no pasen esta prueba en particular, serían ignorados en los siguientes pasos. Esta prueba se conoce como recorte.

Rasterización

Luego, las primitivas se dividen en trozos de unidades más pequeñas y se corresponden con las de píxeles en el framebuffer. Cada una de estas unidades más pequeñas se conoce como Fragmentos.

Procesamiento de fragmentos

Cuando primitivo se ha rasterizado, se aplica color o textura a la geometría.

Operación por fragmento

Por último, los fragmentos se someten a varias pruebas, tales como:

  • Prueba de propiedad de píxeles
  • Prueba de tijera
  • prueba alfa
  • Prueba de plantilla
  • Prueba de profundidad

A partir de estas seis etapas, dos etapas están siendo controladas por programas que se llaman Shaders.

Shader, en resumen, es un pequeño programa desarrollado por usted solo que vive en la GPU. Existe un lenguaje gráfico especial conocido como OpenGL Shading Language (GLSL) en el que se escribe un sombreador. Las dos etapas importantes en la tubería de OpenGL donde tiene lugar un sombreador se denominan etapas de "Procesamiento por vértice" y "Procesamiento por fragmento".

El sombreador que se procesa en la etapa "Per-Vertex" se conoce como Vertex Shader. El sombreador que se procesa en la etapa "por fragmento" se conoce como sombreador de fragmentos. El objetivo final y básico del sombreador de vértices es dar la transformación final de los vértices del personaje a la tubería de renderización, mientras que el objetivo del sombreador de fragmentos es proporcionar los datos de color y textura a cada uno de los encabezados de píxeles al framebuffer.

Cuando los datos se pasan a través de la canalización de representación de OpenGL, el modelo 3D o 2D aparecerá en la pantalla de su dispositivo.

Programa GL

Consejos para OpenGL en Android

En caso de que sea un principiante en el programador de OpenGL, es posible que aún no haya encontrado alguno de estos puntos a continuación. A continuación se presentan algunas pautas para que tenga cuidado al usar OpenGL en Android. Son errores comunes. Así que siempre ten esto en cuenta.

  1. Escalado incorrecto de normales para iluminación
  2. La mala teselación daña la iluminación
  3. Recuerde siempre su modo de matriz
  4. Desbordamiento de la pila de matriz de proyección
  5. No configurar todos los niveles de Mipmap
  6. Lectura de píxeles de luminancia

Requisitos previos para OpenGL en Android

A continuación se detallan los requisitos previos necesarios para OpenGL en Android.

Habilidades de software

  • C, es decir, lenguaje de programación.
  • El conocimiento de C ++ no es necesario pero es útil.
  • Uso de varias bibliotecas que pueden ser estáticas o dinámicas.

Matemáticas

  • Conocimiento de vectores en 2D y 3D.
  • Matrices
  • Conceptos básicos de matemáticas de nivel.

Todos estos son conceptos principales y básicos que se necesitan para comenzar con OpenGL. Es posible que necesite aprender algunos conceptos matemáticos más, pero después de llegar al nivel intermedio. Pero eso depende totalmente de ti. Puede pasar por alto muchas cosas con la ayuda de diferentes bibliotecas.

Conclusión: OpenGL en Android

Por lo tanto, OpenGL es una API completamente funcional de nivel primitivo y que permite al programador abordar y aprovechar el hardware de gráficos de manera efectiva. Una gran cantidad de bibliotecas de alto nivel, así como aplicaciones, usan OpenGL debido a su rendimiento, facilidad de programación, extensibilidad y un amplio soporte.

Artículo recomendado

Esta ha sido una guía para OpenGL en Android. Aquí hemos discutido el proceso de trabajo y los requisitos previos de OpenGL en Android. También puede consultar nuestros otros artículos sugeridos para obtener más información:

  1. WebGL vs OpenGL
  2. ¿Qué es Cognos?
  3. ¿Qué es el software Jira?
  4. Carrera en Azure