stringtranslate.com

Intérprete OpenGL

OpenGL Performer , anteriormente conocido como IRIS Performer y comúnmente conocido simplemente como Performer , es una biblioteca comercial de código de utilidad construida sobre OpenGL con el propósito de permitir aplicaciones de simulación visual en tiempo real . OpenGL Performer fue desarrollado por SGI . OpenGL Performer está disponible para IRIX , Linux y varias versiones de Microsoft Windows . Están disponibles enlaces ANSI C y C++ .

Historia

Performer surgió en 1991 cuando un grupo del proyecto Open Inventor de SGI , entonces conocido como IRIS Inventor, decidió centrarse en el rendimiento en lugar de en la facilidad de programación. Mientras que Inventor entregó objetos fáciles de usar y varios elementos de interfaz de usuario para interactuar con ellos, Performer se centró en un sistema de gráficos de escena que podría reorganizarse sobre la marcha por razones de rendimiento, permitiendo que los distintos pasos de una tarea de renderizado se realicen en paralelo en múltiples hilos . El intérprete permitió que la escena describiera niveles de detalle con bandas de histéresis y capacidades de desvanecimiento. Se controlaron la velocidad de fotogramas y las estadísticas y se calculó un factor de "estrés". Esto podría usarse para ponderar aún más el nivel de detalle en la escena, eliminando detalles para mantener una velocidad de fotogramas objetivo.

Otras características clave de Performer fueron el uso de capacidades de multiprocesamiento simétrico , soporte para múltiples canales de gráficos y la capacidad de utilizar los recursos escalables de sistemas de alta gama. En este sentido, Performer fue realmente fácil de usar dada la complejidad subyacente. La selección y el procesamiento de aplicaciones podrían ejecutarse en diferentes subprocesos bloqueados en diferentes procesadores físicos. En una configuración de múltiples tubos (múltiples subsistemas de gráficos), la representación en cada tubo de gráficos tendría un subproceso dedicado y, de manera similar, el sacrificio también tendría un procesador dedicado. Las funciones avanzadas como paginación de bases de datos, paginación de texturas y gestión de fuentes de luz puntuales (para simulación de vuelo) y pruebas de intersecciones para detección de colisiones también tendrían procesadores dedicados que permitirían la E/S y el procesamiento asincrónicos sin afectar negativamente el rendimiento de los gráficos. La mayor parte de esta complejidad estaba oculta debajo de una API de gráfico de escena más simple con llamadas de configuración de nivel relativamente alto que se podían realizar para configurar los subprocesos y la comunicación entre procesos.

Performer no tenía un formato de archivo nativo, simplemente cargadores de complementos de terceros, como el cargador de formato OpenFlight de MultiGen . De manera similar, no había un tiempo de ejecución predeterminado, había un código de muestra y la aplicación de muestra "perfly" utilizada y modificada con frecuencia. Probablemente esto contribuyó a su reputación de ser difícil de usar.

A mediados de la década de 1990 empezó a quedar claro que no había ninguna razón por la que Inventor y Performer no pudieran combinarse. Esto llevó al proyecto Cosmo 3D que SGI tenía la intención de construir tanto Inventor como Performer (ahora esencialmente API shims ), así como promoverlo como una API nueva y estandarizada de nivel superior para trabajos futuros en la plataforma SGI. Sin embargo, después de la primera versión beta de Cosmo 3D, SGI se unió a Intel e IBM (y más tarde a DEC ) para crear OpenGL++ , esencialmente una versión limpia de Cosmo. Este proyecto murió cuando SGI centró su atención en un proyecto casi idéntico con Microsoft conocido como Fahrenheit , que también fue eliminado. Hoy en día, Inventor y Performer siguen siendo productos separados y ninguna de las versiones combinadas vio la luz.

Características

Performer consta principalmente de dos bibliotecas: libpr de nivel inferior y libpf de nivel superior . La biblioteca libpr proporciona una interfaz orientada a objetos para funciones de renderizado de alta velocidad basadas en el concepto de pfGeoSet y pfGeoState . Un pfGeoSet es una colección de primitivos gráficos, como polígonos o líneas. Un pfGeoState encapsula propiedades pertenecientes a un pfGeoSet determinado, como iluminación, transparencia y textura.

La biblioteca libpf incluye funciones para la generación y manipulación de gráficos de escenas jerárquicas, procesamiento de escenas (tareas de simulación, intersección, selección y dibujo), gestión del nivel de detalle, paginación de bases de datos asíncrona, sistemas de coordenadas dinámicas, modelos de entorno, puntos de luz, etcétera. Esta biblioteca también proporciona soporte transparente para múltiples ventanas gráficas distribuidas en múltiples canales de gráficos.

Otras bibliotecas de Performer ( libpfutil, libpfdb, libpfui, etc.) proporcionan funciones para generar geometría optimizada, conversión de bases de datos, entrada de dispositivos (como para interconectar con flyboxes externos y buses mux MIL-STD-1553 ), modelos de movimiento, modelos de colisión. y una interfaz de base de datos independiente del formato que admite formatos de datos comunes como Open Inventor , OpenFlight , Designer's Workbench, Medit y Wavefront .obj .

Referencias

enlaces externos