informacion[arroba]academiaandroid.com +34 958084455
Cubo Creado Con OpenGL

Gráficos en Android: descripción de OpenGL

Post Series: Gráficos 2D-3D en Android: OpenGL

En esta primera serie de tutoriales sobre OpenGL, trataremos los siguientes temas:

  • ¿Qué es OpenGL y OpenGL ES?
  • Cuáles son las principales características de OpenGL ES.
  • Versiones existentes de OpenGL ES.
  • Pasos para implementar formas 2D.
  • Proyecto ejemplo con OpenGL ES 1.0.

¿Qué es OpenGL y OpenGL ES?

OpenGL® (Open Graphics Library), es una especificación estándar multiplataforma que define una API, que nos permite producir y manipular gráficos 2D y 3D para dibujar escenas complejas a partir de primitivas geométricas simples, como pueden ser una cuadrado o un triángulo. Este tipo de formas primitivas son las representaciones más simples capaces de ser diseñadas por OpenGL

Página oficial OpenGL (ver nota al final del tutorial sobre marca registrada OpenGL)

OpenGL® ES  (OpenGL for Embedded Systems) es una variante de la API OpenGL, diseñada para sistemas integrados, como los dispositivos móviles o videoconsolas, y es la soportada por Android. Al estar destinada a dispositivos empotrados, y por lo tanto dispositivos menos potentes que un PC, se diferencian de OpenGL en que los tiempos de cálculo de OpenGL ES son más cortos.

Página oficial OpenGL ES

El término renderizar se refiere al proceso de generar una imagen o vídeo mediante el cálculo de la iluminación global o GI, a partir de un modelo 3D.

Clases fundamentales para la implementación de OpenGL en Android

GLSurfaceView: Clase que proporciona una vista o View, para la representación y manipulación de objetos mediante el uso de la API OpenGL.
Documentación oficial Android GLSurfaceView

GLSurfaceView.Renderer: Interfaz que implementa los métodos para construir los gráficos en la vista proporcionada por la clase GLSurfaceView:

Métodos que define:

onSurfaceCreated() : Método que será invocado una vez para configurar el entorno de OpenGL ES de la vista.

onDrawFrame() : Método que será invocado para cada redibujado de la vista.

OnSurfaceChanged() : Método que será invocado si la geometría de la vista cambia, por ejemplo, cuando cambia la orientación de la pantalla del dispositivo.

Documentación oficial Android GLSurfaceView.Renderer

Licencia OpenGL: la Free Software Foundation (FSF), tras negociar con SGI, empresa propietaria de OpenGL, estableció un nuevo tipo de licencia denominada “Free Software License B”, muy parecida a las licencias BSD y de Mozilla, considerada por la FSF como libre.

OpenGL es un documento con especificaciones estandarizadas para los fabricantes de hardware, siendo estos últimos los encargados de desarrollar las bibliotecas necesarias para su implementación, debiendo cumplir dichas especificaciones para poder hacer uso de su marca.

Para ampliar información, puedes consultar la documentación oficial del acuerdo de liecencia

Principales características de la API OpenGL ES

  • Distribución libre.
  • Permite dibujar figuras geométricas básicas.
  • Nos proporciona las herramientas necesarias para realizar transformaciones sobre los vértices: traslaciones (cambiar la posición de una figura en un plano), rotaciones (cambio de orientación de un cuerpo con respecto a un punto tomado como centro) y escalados (aumento o disminución del tamaño de una figura sin deformarlo).
  • Incorporada con la API de Android, sin necesidad de añadir ninguna librería o instalar cualquier otra herramienta.
  • API multiplataforma y multilenguaje, con todas las funciones 2D y 3D para sistemas embebidos o integrados (consolas, electrodomésticos, móviles etc.).
  • Las versiones 1.X están destinadas a hardware de función fija, ofreciendo aceleración, calidad de imagen y rendimiento.
  • Las versiones 2.X permiten programar gráficos 3D completos.
  • La versión OpenGL ES 1.1 es totalmente compatible con OpenGL ES 1.0.
  • Es independiente del Hardware.
  • Aceleración de gráficos gracias a su acceso al hardware dedicado (GPU o unidad de procesamiento gráfico).

Versiones OpenGL ES y packages que contienen.

En el siguiente apartado, se revisarán las diferentes versiones disponibles de OpenGL ES, y los “packages” que implementan cada una de ellas. Además se profundizará en las clases definidas en cada packages.

OpenGL ES 1.0 y 1.1

Especificaciones de API soportada por las versiones de Android 1.0 y superiores. OpenGL ES 1.0 está basada en OpenGL 1.3 y OpenGL 1.1 está basada en OpenGL 1.5.

Packages:

android.opengl: Paquete que proporciona una interfaz estática a las clases de OpenGL ES 1.0/1.1, y mayor rendimiento que los paquetes de interfaces de javax.microedition.khronos.

Documentación oficial

Clases:

  • GLES10
  • GLES10Ext
  • GLES11
  • GLES11Ext

javax.microedition.khronos.opengles: Paquete que proporciona la implementación estándar de OpenGL ES 1.0/1.1.

Documentación oficial

Clases:

  • GLES10
  • GLES10Ext
  • GLES11
  • GLES11Ext
  • GL11ExtensionPack

OpenGL ES 2.0

Especificaciones de API soportada para las versiones de Android 2.2 y superiores (API nivel 8). OpenGL ES 2.0 está basada en OpenGL 2.0.

Packages:

android.opengl.GLES2: Paquete que proporciona la interfaz para OpenGL ES 2.0. Disponible a partir de Android 2.2 (nivel de API 8).

Documentación oficial

OpenGL ES 3.0

Especificaciones de API soportada para las versiones de Android 4.3 y superiores (API nivel 18).

Packages:

android.opengl.GLES30: Paquete que proporciona la interfaz para OpenGL ES 3.0. Disponible a partir de Android 4.3 (nivel de API 18).

Documentación oficial


Créditos: OpenGL is a registered trademark and the OpenGL ES logo is a trademark of Silicon Graphics Inc. used by permission by Khronos.

 

This Post Has 4 Comments

  1. buenas tardes disculpe, necesito trabajar con open gl en tablas con android… hasta ahora solo he trabajado un par de veces en la pc bajo c++, quisiera alguna orientacion desde lo mas basico, instalacion de aplicacion y librerias open gl y glut, esta ultima libreria si ha de ser posible adicionar, sino al menos trabajar con open gl en android. por favor orienteme como iniciar, desde que aplicacion instalar en la tabla o movil android. Gracias

    1. Hola de nuevo,
      hemos tratado OpenGL a un nivel de iniciación. No hemos cubierto GLUT, pero si es para empezar a trabajar con la API OpenGL, tienes un proyecto de ejemplo básico en las dos siguientes publicaciones de esta serie (tutorial y video explicando el proyecto y descarga de su código). Si te interesan solo tienes que registrarte (suscripción o acceso Premium) y acceder a ellos:
      https://academiaandroid.com/proyecto-android-construccion-formas-primitivas-con-opengl/
      https://academiaandroid.com/videotutorial-generacion-formas-basicas-2d-3d-con-opengl-en-app-android/
      Saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *