¿Qué es 2D OpenGL?

Open Graphics Library® (OpenGL®) es principalmente una interfaz de programación que permite que las aplicaciones de software interactúen con el hardware de gráficos y creen escenas tridimensionales (3D) de manera rápida y eficiente. Utilizando técnicas de programación OpenGL® bidimensionales (2D), la aceleración de hardware proporcionada por la biblioteca puede mejorar el rendimiento y, a veces, la facilidad de programación del software que no necesariamente emplea modelos o transformaciones 3D. El método más común de usar 2D OpenGL® es dibujar cuadriláteros, o rectángulos, que están texturizados con una imagen, creando efectivamente un objeto en un espacio 3D a partir de una imagen. Una vez establecidos, estos cuadriláteros se pueden manipular, ya sea con métodos 2D estrictos o transformándolos con matrices 3D para efectos especiales que de otra manera serían difíciles de hacer con solo gráficos rasterizados 2D. Existen algunas complicaciones que conlleva el uso de una biblioteca 3D al emplearla solo para gráficos 2D, incluida la hiperprecisión que puede hacer que sea complejo aislar ubicaciones de un solo píxel, así como exigir cierto soporte de hardware 3D para un programa que podría no requerir realmente eso.

Muchos desarrolladores de hardware y software proporcionan controladores e interfaces de programación abstracta (API) personalizadas que hacen que sus productos particulares sean totalmente compatibles con la biblioteca OpenGL®. Esta amplia aceptación de un estándar abierto ofrece a los programadores una forma de acceder directamente al hardware en una gran variedad de sistemas. La aceleración de hardware proporcionada cuando se usa 2D OpenGL® puede permitir que un programa se ejecute con mayor fluidez de lo que sería posible de otra manera. Esta velocidad se equilibra con el hecho de que el uso de la canalización de OpenGL® para gráficos puede ser muy diferente del uso de métodos de programación 2D tradicionales que generalmente no emplean un modelo de máquina de estados como lo hace OpenGL®.

La mayoría de los programas 2D OpenGL® utilizan rectángulos planos que están hechos en las mismas proporciones que una imagen de textura para representar los gráficos. Esto tiene la ventaja de ser muy rápido de renderizar, además de simplificar la programación, por lo que utiliza algo de la misma lógica que los gráficos almacenados en búfer basados ​​en ráster. Algunos efectos, como escalar una imagen, rotar una imagen o invertir una imagen, en realidad se pueden realizar de manera mucho más eficiente con OpenGL®.

Hay ciertos factores que pueden hacer que los programas 2D OpenGL® sean más complejos de lo que normalmente lo serían otros programas 2D. Uno de estos factores es la precisión de los píxeles en la pantalla. OpenGL® no equipara una parte del sistema de coordenadas virtual a un píxel en una pantalla, como lo hacen los gráficos de trama, por lo que a veces es necesario utilizar números de punto flotante para las coordenadas de la pantalla para evitar espacios en la pantalla o ubicaciones extrañas de píxeles.

Otro problema es que OpenGL® requiere el uso de una tarjeta gráfica para aumentar la velocidad de renderizado. Si una aplicación utiliza OpenGL® para mostrar una interfaz o una ventana del sistema, los dispositivos que no tienen aceleración de gráficos pueden sufrir una pérdida de rendimiento de los gráficos que pueden parecer muy básicos para un usuario final. OpenGL tampoco proporciona ningún soporte nativo para mostrar texto, lo que significa que mostrar grandes áreas de texto podría requerir una buena cantidad de código personalizado.