¿Cuáles son los diferentes tipos de extensiones OpenGL?

Hay varias extensiones OpenGL® diferentes, que se utilizan principalmente para ayudar a administrar y mantener la estructura ordenada de las bibliotecas OpenGL®. Hay cuatro tipos principales de extensiones OpenGL®: de proveedor, aprobadas, genéricas y centrales. Las extensiones aprobadas, genéricas y centrales denotan funciones y bibliotecas que, de alguna manera, están avanzando hacia su inclusión en la distribución general del kit de desarrollo OpenGL®. Las extensiones de proveedor son funciones personalizadas que se aplican a entornos de software o hardware específicos. Hay algunos otros tipos, aunque son más para la subclasificación de las muchas extensiones que existen.

Una de las razones por las que existen diferentes tipos de extensiones OpenGL® es el uso generalizado de las bibliotecas centrales y la cantidad potencialmente confusa de código propietario que se crea para extenderlas. La Junta de revisión de arquitectura OpenGL® (ARB) ayuda a mantener y hacer cumplir el estándar OpenGL® y a administrar las extensiones. Muchas extensiones comienzan como extensiones de proveedor o extensiones ubicuas y, con el tiempo, pueden ser utilizadas por múltiples proveedores, ganando el título de una extensión genérica. Luego, la ARB puede revisar las extensiones genéricas y convertirse en extensiones aprobadas por la ARB que probablemente se unirán a las extensiones principales.

Las extensiones de proveedor OpenGL® son funciones implementadas por los fabricantes de hardware de gráficos o sistemas operativos. Estos tipos de extensiones permiten a un fabricante mejorar o introducir nuevas funciones en el rendimiento de sus gráficos y luego poner esas mejoras a disposición de los programas OpenGL®. Todas las extensiones de proveedor comienzan con un código asignado por ARB para representar el nombre del fabricante, lo que indica el entorno en el que la función podría estar disponible.

Las extensiones genéricas de OpenGL® son funciones que han sido utilizadas e implementadas por varios fabricantes y ya no necesitan ser designadas con códigos de prefijo de proveedor especiales. No es necesario implementar todas las extensiones genéricas para mantener el cumplimiento del estándar OpenGL®. Una extensión genérica usa el prefijo GL_EXT antes del nombre de la función o constante.

Las extensiones OpenGL® aprobadas son aquellas que han sido adoptadas por más de un fabricante y han sido revisadas por la ARB, lo que les permite formar parte de la biblioteca OpenGL® normal. Las funciones de este tipo generalmente son implementadas por todos los fabricantes, sin importar qué proveedor inventó realmente la extensión e independientemente de si los otros proveedores tienen hardware que pueda soportar las funciones solicitadas. Este tipo de extensión lleva el prefijo GL_ARB.

Las extensiones Core OpenGL® son funciones que pueden mejorar el rendimiento de programas más antiguos al permitir llamadas a versiones anteriores de la función OpenGL® para ejecutar el código más reciente. A medida que se lanzan nuevas versiones de OpenGL®, las nuevas extensiones principales se pueden llamar sin problemas desde un programa anterior sin la necesidad de cambiar el código fuente. A pesar de la conveniencia de mejorar la compatibilidad con versiones anteriores, las extensiones principales de OpenGL® aún pueden depreciarse con el tiempo.