OpenSG es un sistema de gráficos de escena para crear programas de gráficos en tiempo real, por ejemplo, para aplicaciones de realidad virtual. Se desarrolla siguiendo los principios de código abierto, tiene licencia LGPL y se puede utilizar libremente. Se ejecuta en Windows , Linux , Solaris y OS X y está basado en OpenGL .
Escrito en | C ++ |
---|---|
Sistema operativo | Windows , Linux , Solaris , OS X |
Tipo | Gráfico de escena |
Licencia | LGPL |
Sitio web | sourceforge |
Sus características principales son el soporte avanzado de multiproceso y agrupación en clústeres (con renderizado de ordenamiento primero y ordenamiento último , entre otras técnicas), aunque también se puede utilizar perfectamente en una aplicación de un solo sistema de un solo subproceso.
No es parte del Grupo Khronos .
Historia
El proyecto se inició, al igual que muchos otros sistemas, al final de la extinción scenegraph en 1999, cuando Microsoft y SGI 's API de gráficos Fahrenheit proyecto murieron. Dado que no había otro sistema de gráficos de escena en el mercado ni en el horizonte con las características que los autores querían, decidieron comenzar el suyo.
OpenSG no debe confundirse con OpenSceneGraph, que es una API de gráficos de escena completamente diferente, algo similar a OpenGL Performer . El desarrollo en ambos comenzó casi al mismo tiempo y ambos eligieron nombres similares.
Tecnología
OpenSG es un gráfico de escena como muchos otros, pero con una serie de características únicas que lo distinguen de los demás. Cuenta con un sistema de administración de estado bloqueado para reducir la sobrecarga para la optimización del cambio de estado, un recorrido altamente flexible y otros mecanismos para permitir el intercambio en tiempo de ejecución y la mejora de las estructuras de datos centrales, pero el aspecto más inusual es su enfoque de subprocesos múltiples. [1]
Los gráficos de escena son objetivos notoriamente difíciles para los subprocesos múltiples, ya que contienen estructuras de datos muy grandes que consumen fácilmente cientos de megabytes de memoria. Duplicarlos no es una opción debido a la gran sobrecarga. Muchos gráficos de escena simplemente bloquean nodos individuales para evitar la corrupción de datos debido a escrituras paralelas, pero esa es solo una solución parcial. El estado del gráfico de escena está representado por el gráfico de escena completo, solo proteger nodos individuales puede conducir a resultados inconsistentes (por ejemplo, cuando se ejecuta una simulación de física asincrónica, solo la actualización de partes del gráfico conducirá a la visualización de pasos de simulación parciales). OpenSG utiliza el almacenamiento en búfer múltiple selectivo, al duplicar las partes pequeñas del gráfico para cada hilo que debe protegerse mientras comparte los datos masivos como matrices de vértices e imágenes de textura, y solo los duplica mediante un mecanismo de copia en escritura. La sincronización de los cambios para subprocesos individuales se realiza mediante un enfoque de lista de cambios que permite una sobrecarga mínima.
El mismo mecanismo también permite un agrupamiento altamente flexible y efectivo. Para sincronizar una aplicación que se ejecuta en varias máquinas, solo los cambios para cada fotograma se envían a cada máquina y se integran en el gráfico de escena local. De esta forma, la distinción entre cambios locales y remotos es casi invisible. Una aplicación que quiera ejecutarse en un clúster solo necesita abrir una ClusterWindow que pueda distribuir todos los cambios en el clúster y pueda manejar fácilmente un Powerwall o un CAVE sin tener que preocuparse por los protocolos de distribución y otras complicaciones.
Personas
El proyecto fue iniciado por Dirk Reiners , Gerrit Voss y Johannes Behr . ha recibido contribuciones de muchas otras personas, sobre todo de Carsten Neumann, que actualmente es el responsable principal de mantenimiento.
Referencias
- ^ Voß, G .; Behr, J .; Reiners, D .; Roth, M. (1 de enero de 2002). "Una base segura de múltiples subprocesos para gráficos de escena y su extensión a los clústeres" . Actas del IV Taller de Eurografía sobre gráficos y visualización paralelos . EGPGV '02. Aire-la-Ville, Suiza, Suiza: Eurographics Association: 33–37. doi : 10.1145 / 569673.569679 (inactivo el 31 de mayo de 2021). ISBN 1-58113-579-3.Mantenimiento de CS1: DOI inactivo a partir de mayo de 2021 ( enlace )