¿Has oído hablar alguna vez de OpenGL? Se convirtió rápidamente en la API de gráficos en tiempo real líder de la industria, ya que, era básicamente la única disponible en múltiples plataformas. Hoy te traemos este artículo en el que te explicamos qué es OpenGL y para qué sirve.
Índice de contenidos
Historia
En los años 80 el desarrollo de software que fuese compatible con un amplio rango de hardware relacionado con el mundo gráfico era un verdadero reto para los desarrolladores. Había que tratar con interfaces muy diferentes y escribir drivers específicos para cada tipo de hardware, resultando muy caro, por ello, se subcontrataban equipos de programadores para agilizar el desarrollo. Dado que cada equipo trabajaba por separado en sus interfaces, se producía mucho código redundante. En 1992, SGI lideró la creación del OpenGL Architecture Review Board (OpenGL ARB), un grupo de empresas que mantendría y extendería la especificación en los años siguientes. OpenGL evolucionó desde IRIS GL, superando su problema de dependencia del hardware al ofrecer emulación software para aquellas características no soportadas. Así, las aplicaciones podían utilizar gráficos avanzados en sistemas relativamente poco potentes.
Para entender qué es OpenGL primero tenemos que saber que es una API.
Entendiendo OpenGL, ¿Qué es una API?
Una API o Interfaz de Programación de Aplicaciones (en inglés, Application Programming Interface) es un conjunto de códigos que se pueden emplear para que varias aplicaciones se comuniquen entre ellas. Es algo que realiza una tarea similar a la interfaz de usuario a la hora de fomentar la interacción entre persona y programa, solo que, aplicado única y exclusivamente dentro del entorno del software. Sirve para conectar códigos o funciones entre plataformas diferentes, para que se puedan aprovechar los servicios de una web en otra.
¿Qué es OpenGL?
Se considera principalmente como una API que nos proporciona un gran conjunto de funciones que podemos usar para manipular gráficos e imágenes 3D y 2D. Sin embargo, por sí solo no es simplemente una API, sino una especificación, desarrollada y mantenida por el Grupo Khronos. También se usa para el desarrollo de videojuegos, donde compite con Direct3D en la plataforma de Microsoft.
Especifica exactamente como debería ser el resultado de cada función y cómo debería funcionar. Dado que la especificación OpenGL no proporciona detalles de implementación, las versiones desarrolladas reales pueden tener implementaciones diferentes, siempre y cuando sus resultados cumplan con la especificación (y, por lo tanto, sean los mismos para el usuario).
Los que desarrollan las bibliotecas OpenGL suelen ser los fabricantes de tarjetas gráficas. Cada GPU admite versiones específicas de esta API, que son las versiones de OpenGL desarrolladas específicamente para esa tarjeta gráfica. Por ejemplo, cuando se utiliza un sistema de una compañía como Apple, mantienen la biblioteca OpenGL y, bajo Linux, existe una combinación de versiones de proveedores gráficos y adaptaciones para estas bibliotecas. Esto puede significar que cada vez que OpenGL muestra un comportamiento extraño que no debería, es muy probable que sea culpa de los fabricantes de tarjetas gráficas. Cada vez que hay un error en la implementación, generalmente se resuelve actualizando los controladores de la tarjeta gráfica. Esos controladores incluyen las versiones más recientes que admite su GPU. Por esta razón es la que siempre se recomienda actualizar los drivers.
Objetivos de OpenGL
Los principales objetivos son:
- Reducir la complejidad de la interfaz con las diferentes tarjetas gráficas, presentando al programador una API única y uniforme.
- Ocultar las diferentes capacidades de las diversas plataformas de hardware, requiriendo que todas las implementaciones soporten el conjunto completo de características de OpenGL (utilizando emulación por software si fuese necesario).
La operación básica de OpenGL es aceptar acciones primitivas tales como puntos, líneas y polígonos, y convertirlas en píxeles. Este proceso es realizado por una pipeline gráfica conocida como la Máquina de estados de OpenGL. La mayor parte de los comandos de OpenGL emiten operaciones primitivas a la segmentación de la gráfica. Hasta la aparición de la versión 2.0, cada etapa de la segmentación se ejecutaba en una función establecida, resultando poco configurable. A partir de esta versión varias etapas son completamente programables usando GLSL.
Extensiones
Una gran característica muy interesante es su soporte de extensiones. Cada vez que una compañía de GPUs presenta una nueva tecnología o una nueva forma de optimización para renderizar imágenes 3D, se encuentra en una extensión implementada en los controladores. Si el hardware en el que se ejecuta una aplicación admite dicha extensión, el desarrollador puede usar la funcionalidad proporcionada por la extensión para obtener gráficos más avanzados o eficientes. De esta manera, un desarrollador de videojuegos puede usar estas nuevas técnicas de renderizado sin tener que esperar a que OpenGL incluya la funcionalidad en sus futuras versiones, simplemente comprobando si la tarjeta gráfica admite la extensión. A menudo, cuando una extensión es popular o muy útil, eventualmente se convierte en parte de futuras versiones de OpenGL.
Evolución de OpenGL
En marzo de 2015, la API Vulkan fue presentado como el sucesor de OpenGL en la Game Developers Conference. Inicialmente conocida como «OpenGL de próxima generación» o «glNext», la interfaz de programación es de código abierto y multiplataforma. La diferencia con OpenGL es que se pone más atención en el hardware durante la programación, lo que aumenta significativamente la potencia. Algunos juegos de PC ya son compatibles con Vulkan, pero la mayoría usa DirectX. Vulkan también es desarrollado por el Grupo Khronos.
Te recomendamos la lectura de las mejores tarjetas gráficas del mercado.
Hasta aquí nuestro articulo sobre OpenGL, esperemos que hayas entendido en qué consiste y demás. De todas maneras, cualquier duda puedes dejarla en los comentarios.