OpenGL ++ era una biblioteca de gráficos escrita en C ++ que admitía estructuras de datos orientadas a objetos sobre el sistema de gráficos OpenGL 3D. El proyecto comenzó como resultado de una asociación entre SGI , IBM e Intel , y más tarde, Digital Equipment Corporation . Se pretendía proporcionar una API de mayor nivel que el soporte "bare metal" de OpenGL, además de ser una implementación para Java3D . [1] El trabajo en OpenGL ++ terminó cuando SGI decidió asociarse con Microsoft , lo que llevó al Fahrenheit proyecto, que también murió.
Fondo
La gran mayoría de aplicaciones que utilizan sistemas 3D describen los objetos en su "mundo" en una estructura de datos conocida como gráfico de escena . Un gráfico de escena normalmente se organiza como una especie de estructura de datos de árbol , con los nodos que representan objetos y los bordes su relación con otros objetos en el mundo. Por ejemplo, una mesa puede estar representada por un único objeto "mesa" con varios bordes que conectan sus partes, la superficie de la mesa, las patas, etc.
La clave para un alto rendimiento en aplicaciones 3D es decidir qué objetos en el mundo son realmente visibles dada la posición y dirección actual de la cámara. Por ejemplo, no es necesario dibujar los objetos detrás de la cámara. El recorrido rápido del gráfico de la escena es esencial para que esta operación de "selección" ocurra rápidamente.
Los gráficos de escena generalmente se dejaban al desarrollador para que los implementara, y era muy común ver ejemplos deficientes que conducían a un rendimiento deficiente. SGI había trabajado en varios proyectos que estaban destinados a ayudar al desarrollador a producir un gráfico de escena de alta calidad, pero ninguno de ellos se había utilizado ampliamente por una variedad de razones. Open Inventor fue uno de esos ejemplos, y tenía la intención de simplificar la creación del gráfico de escena, pero los resultados no fueron necesariamente de muy alto rendimiento. OpenGL Performer era un proyecto similar que estaba destinado a producir escenas de alta velocidad y admitir una gran cantidad de objetos en el "mundo", pero no era particularmente fácil de usar. [2]
Cosmo3D
Los equipos Inventor y Performer ya se habían dado cuenta de que no había ninguna razón en particular para que los dos sistemas no pudieran combinarse en uno, ofreciendo tanto facilidad de desarrollo como alto rendimiento. Esto condujo al sistema Cosmo3D , básicamente, a un gráfico de escena estandarizado de alto rendimiento que se encontraba en la parte superior de OpenGL. Cosmo3D introdujo un nuevo formato de archivo que podría usarse para almacenar escenas enteras y todos los datos necesarios para reconstruirlas, el formato VRML que todavía está en uso. [2]
SGI produjo una serie de productos que utilizaban Cosmo3D. Entre estos se encontraban una variedad de herramientas VRML y un gran sistema de visualización de modelos para fines CAD llamado OpenGL Optimizer. Curiosamente, Cosmo Code, una herramienta de creación de VRML, fue producida por una división diferente y no usó el gráfico de escena de Cosmo en absoluto.
El gráfico de escena de Cosmo no era de ninguna manera una solución única en ese momento, y varias otras compañías gráficas estaban trabajando en ideas similares en ese momento.
OpenGL ++
En la reunión del 20-21 de agosto de 1996 de la Junta de Revisión de Arquitectura OpenGL (ARB), SGI planteó la idea de un nuevo gráfico de escena estandarizado similar a Cosmo3D pero con la intención expresa de basarse en OpenGL "estándar". Hubo cierto interés en el concepto, por lo que en la reunión del 9 al 10 de diciembre de 1996, el grupo presentó el primer borrador del concepto OpenGL ++. [2] Una reunión de seguimiento realizada entre el 17 y el 19 de febrero de 1997 demostró que había un interés considerable por parte de la mayoría de las partes, con la excepción de Microsoft y Sun, aunque había preocupaciones sobre si la ARB era o no el organismo adecuado para respaldar tal un esfuerzo sin diluir su trabajo principal de soportar OpenGL. [3] El desarrollo continuó a lo largo de 1997, incluidas varias distribuciones de la API . Sin embargo, el ARB señala que "ha habido mucho trabajo, pero relativamente poca comunicación". [4]
Mientras continuaba el trabajo en OpenGL ++, Sun y SGI también habían estado trabajando en un estándar 3D adecuado para Java. Estos esfuerzos finalmente fracasaron y Sun lanzó Java3D. SGI sugirió que su trabajo en Cosmo era una implementación de muestra de Java3D y, a medida que este trabajo evolucionó a OpenGL ++, estos planes se movieron con él. Durante la definición de OpenGL ++, Sun declaró que no estaban interesados en trabajar en el esfuerzo ya que estaban enfocados en su trabajo Java3D. [2] Comparativamente, Java3D abarca dos capas de la pila 3D, el gráfico de escena y la interfaz visual y sus widgets.
A finales de 1997, SGI parecía estar plenamente comprometido con el esfuerzo de OGL ++. Habían declarado que se abandonaría el trabajo existente de Cosmo y que Open Inventor, Performer y OpenGL Optimizer se volverían a escribir para alojarlos encima de OGL ++. Como OGL ++ estaba destinado a ser una versión limpia y más flexible de Cosmo3D, la mayor parte del equipo de Cosmo3D comenzó a trabajar en OGL ++ y gran parte del esfuerzo se dirigió a una especificación e implementación que pudiera cumplir la promesa de una solución verdaderamente poderosa pero genérica. gráfico de escena. [5] [6]
Al final
En la reunión de la ARB de marzo de 1998, para sorpresa de todos, SGI presentó Fahrenheit, un proyecto completamente nuevo. La ARB señala en esa nota de la reunión "SGI consideró fundamental trabajar junto con Microsoft, que no se había movido en direcciones compatibles, para poder crear productos de valor agregado en el entorno de Windows. Fahrenheit es un gran paso en esa dirección . " [2] OpenGL ++ fue abandonado.
El proyecto parece haber sido víctima de las prioridades cambiantes de SGI durante este período, cambiando de dirección para asociarse con empresas más grandes. Cuando estas empresas abandonaron el espacio 3D para centrarse en otros nichos de productos, SGI se quedó como el único partidario del proyecto, exactamente lo que estaban tratando de evitar. Finalmente, la única otra empresa con un enfoque en 3D fue Microsoft, y el proyecto Fahrenheit comenzó y terminó poco después de los esfuerzos de OpenGL ++.
Hoy en día, no existe tal escenario gráfico estandarizado, y SGI prácticamente ha salido del mundo de las API. SGI ha lanzado el código Open Inventor anterior en código abierto , pero el código fuente de OGL ++ nunca se completó de manera satisfactoria. No existe una especificación finalizada y, al igual que con OpenGL, la especificación y la idea detrás de una plataforma tan abierta habrían sido las que le dieron su valor duradero, ni una sola implementación de una idea de gráfico de escena.
Referencias
- ^ API de Java 3D, OpenGL ++
- ^ a b c d e Estándar de gráficos de escena para OpenGL , Notas de la reunión ARB
- ^ "Notas de la reunión, 17-19 de febrero de 1997"
- ^ "Notas de la reunión del subcomité de interés de OpenGL ++ ARB"
- ^ "Notas de la reunión del subcomité de interés de OpenGL ++ ARB, 8 de septiembre de 1997"
- ^ "Skimmer en OpenGL ++ Maze en OpenGL ++"
Otras lecturas
- Una especificación de OpenGL ++
- OpenGL ++ (OpenGLPlus) Posibles capas (instantánea de Wayback)