Core OpenGL , o CGL , es la interfaz del sistema de ventanas Macintosh Quartz de Apple Inc. para la implementación OS X de la especificación OpenGL . CGL es análogo a GLX , que es la interfaz X11 para OpenGL, así como WGL , que es la interfaz de Microsoft Windows para OpenGL.
Historia
Todas las interfaces del sistema de ventanas a OpenGL surgieron a partir de la migración de la interfaz de programación de aplicaciones de gráficos 3D ( API ) IrisGL, propiedad de Silicon Graphics, a su forma estándar abierta actual OpenGL. Cuando se tomó la decisión de convertir IrisGL en un estándar abierto, el principal cambio de diseño requerido fue hacer que este sistema de ventanas API estándar de gráficos fuera agnóstico. Por lo tanto, toda la lógica específica del sistema de ventanas se eliminó de IrisGL al pasar a OpenGL. La lógica del sistema de ventana incluye cualquier mecanismo de evento para recopilar información de dispositivos como teclados y ratones, así como cualquier lógica de ordenación o tamaño de ventana utilizada al dibujar en una interfaz de usuario moderna con ventana. Además, toda la gestión interna de los búferes de memoria de la ventana, a veces denominados superficies, también se eliminó de IrisGL para crear OpenGL.
Dado que el sistema de ventanas OpenGL es independiente del sistema de ventanas, empresas como Apple deben asumir la carga de configurar y administrar las superficies utilizadas como destino para el renderizado OpenGL.
Características
Interfaces del sistema de ventanas
En OS X, CGL es la capa fundamental de las interfaces del sistema de ventanas para OpenGL. Tanto AGL (Apple Graphics Library) como Cocoa (API) (o AppKit) tienen interfaces para OpenGL y son capas de software lógicas y dependen de CGL para su comportamiento. CGL y AGL interactúan libremente. CGL y Cocoa se pueden usar juntos, sin embargo, las clases Cocoa pueden realizar cambios implícitamente en el estado de CGL. Las llamadas a funciones de AGL y Cocoa no deben mezclarse.
La configuración de estas superficies se realiza mediante un proceso de selección de formato de píxeles en el que se combinan diferentes capas compatibles de información de renderizado para formar un framebuffer . Ejemplos de tales capas son los búferes de color, los búferes de transparencia (alfa), los búferes de estarcido y los búferes de profundidad . La función CGL CGLChoosePixelFormat se utiliza para realizar esta verificación de compatibilidad de búfer. CGLChoosePixelFormat, según los parámetros de entrada y su política de puntuación, elegirá un formato de píxel que represente una configuración de búfer compatible que sea compatible con el renderizador subyacente que se utilizará para procesar comandos gráficos. Los renderizadores pueden estar basados en hardware, de manera que correspondan a las tarjetas gráficas instaladas en el sistema, o pueden estar basados en software, donde la CPU principal del sistema maneja todo el procesamiento de comandos de gráficos y el trabajo de rasterización final .
Manejo de la heterogeneidad de Mac OS X
En Mac OS X, CGL también es responsable de manejar la naturaleza heterogénea de las instalaciones y la configuración de dispositivos gráficos en sistemas Macintosh. Las computadoras Macintosh pueden tener cualquier cantidad de pantallas y tarjetas gráficas instaladas. En estas configuraciones, el escritorio del usuario puede virtualizarse (extenderse) o reflejarse en múltiples pantallas que están conectadas a múltiples tarjetas gráficas que pueden o no ser del mismo proveedor de gráficos.
Controlando el renderizado
Cuando los usuarios configuran su Macintosh para usar un escritorio virtualizado y arrastran ventanas de una pantalla a otra, CGL maneja la administración del estado de los gráficos OpenGL que deben ser sombreados entre dispositivos para proporcionar consistencia en el procesamiento de comandos entre ellos. Arrastrar una ventana a través de un escritorio Macintosh entre dos pantallas diferentes que son compatibles con dos renderizadores diferentes se conoce como "Cambio de pantalla virtual".
CGL también proporciona un mecanismo para obtener información sobre el renderizador que está actualmente en uso. La estructura de datos principal que mantiene el estado OpenGL en Mac OS X es CGLContextObj . Estos contextos CGL se pueden recuperar en cualquier momento mediante una llamada a CGLGetCurrentContext . El CGLContextObj puede entonces ser consultado para obtener información específica sobre el renderizador que está asociado con él.
Renderizador de software
También se incluye el renderizador de software OpenGL interno de Apple . Originalmente, este era un paquete entero simple, en 10.3 se introdujo uno nuevo de punto flotante que finalmente lo reemplazó . El renderizador de software, aunque lento, es lo suficientemente rápido para aplicaciones básicas y mantiene las funciones completas con la implementación de OpenGL de OS X para fines de desarrollo.
Ver también
enlaces externos
- Guía de referencia de CGL en el sitio web de Apple (html). - Archivado el 12 de agosto de 2014 en Wayback Machine.
- Guía de referencia de CGL en el sitio web de Apple (PDF). - Archivado el 24 de agosto de 2014 en Wayback Machine.