OpenGL

La interfaz consiste en más de 250 funciones diferentes que pueden usarse para dibujar escenas tridimensionales complejas a partir de primitivas geométricas simples, tales como puntos, líneas y triángulos.

Dichas implementaciones deben superar unos tests de conformidad para que sus fabricantes puedan calificar su implementación como conforme a OpenGL y para poder usar el logotipo oficial de OpenGL.

Hay implementaciones eficientes de OpenGL para Mac OS, Microsoft Windows, GNU/Linux, varias plataformas Unix y PlayStation 4.

Esto contrasta con las API descriptivas, donde un programador sólo debe describir la escena y puede dejar que la biblioteca controle los detalles para representarla.

Nota: Cuidado, este ejemplo es únicamente válido con OpenGL 2.1 y versiones anteriores.

Primero, limpiamos el buffer de color para empezar en un canvas negro: Se establece la matriz modelview, que controla la posición de la cámara respecto a las primitivas que renderizamos.

La retrasamos 3 unidades en el eje Z, dejándola apuntando hacia el origen: La matriz projection controla la perspectiva aplicada a las primitivas; se utiliza de forma similar a la anterior: Por último, se dibuja un polígono (un cuadrado verde orientado en el plano XY): En los años 1980 el desarrollo de software que fuese compatible con un amplio rango de hardware 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 costoso; 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.

Además, era un proceso caro, por lo que varios grupos innovadores aceptaron el reto de encontrar un método mejor.

OpenGL evolucionó desde IRIS GL, superando su problema de dependencia del hardware al ofrecer emulación software para aquellas características no soportadas por el hardware del que se dispusiese.

Así, las aplicaciones podían utilizar gráficos avanzados en sistemas relativamente poco potentes.

Dicha especificación fue divulgada entre unos pocos grupos interesados, pero nunca apareció finalmente como producto.

[14]​ En 1995 Microsoft lanzó Direct3D, que se convertiría en el principal competidor de OpenGL.

La primera especificación de OpenGL fue publicada por Mark Segal y Kurt Akeley.

Esto permitió texturas múltiples que son combinadas por píxel durante la rasterización.

OpenGL 2.0 añadió soporte para un lenguaje ensamblador basado en GPU verdadero, llamado ARB (diseñado por el Architecture Review Board), que se convertiría en el estándar para vertex y fragment shaders.

Es compatible hacia atrás con todas las versiones anteriores de OpenGL, aunque introduce un nuevo mecanismo para despreciar (deprecate en inglés) funcionalidad obsoleta y así poder simplificar la API en versiones futuras.

[37]​[38]​ Publicado el 17 de julio del 2017[40]​[41]​ Soporte de hardware: AMD Radeon HD 7000 Series y posteriores (sombreadores FP64 implementados por emulación en algunas GPU TeraScale), Intel Haswell y posteriores, Nvidia GeForce 400 series y posteriores[42]​ La popularidad de OpenGL se debe en parte a su detallada documentación oficial.

El OpenGL ARB ha publicado una serie de manuales actualizados conforme la API iba evolucionando.

Son fácilmente reconocibles (y conocidos) por el color de sus tapas: Para OpenGL 2.0 y posteriores: El estándar OpenGL permite a los fabricantes añadir nuevas funcionalidades adicionales mediante extensiones conforme aparecen nuevas tecnologías.

Es posible que varios fabricantes se pongan de acuerdo en implementar la misma funcionalidad extendida.

Antes de usar una extensión, los programas deben comprobar su disponibilidad y, después, acceder a las nuevas funcionalidades ofrecidas.

Este proceso es dependiente de la plataforma, pero bibliotecas como GLEW y GLEE lo simplifican.

Se han programado varias bibliotecas externas que añaden características no disponibles en el propio OpenGL.

Proceso en la pipeline de gráficos.