
QuickDraw 3D , o QD3D para abreviar, es una API de gráficos 3D desarrollada por Apple Inc. (entonces Apple Computer, Inc.) a partir de 1995, originalmente para sus computadoras Macintosh , pero distribuida como un sistema multiplataforma. [ 1 ]
QD3D se dividió en dos capas. Un sistema de nivel inferior conocido como RAVE (Rendering Acceleration Virtual Engine) proporcionaba una capa de abstracción de hardware con una funcionalidad similar a Direct3D o versiones reducidas de OpenGL como MiniGL . Sobre esto se encontraba un sistema de grafo de escena orientado a objetos , QD3D propiamente dicho, que gestionaba la carga y manipulación de modelos a un nivel similar a OpenGL++ . [ 2 ] El sistema también proporcionaba varias utilidades de alto nivel para la conversión de formatos de archivo y una aplicación de visualización estándar para Mac OS.
QD3D tuvo escaso impacto en el mercado informático, tanto por la difícil situación de Apple a mediados de la década de 1990 como por varias decisiones desafortunadas tomadas por el equipo de diseño sobre futuros cambios en el mercado del hardware 3D que no llegaron a materializarse. Apple abandonó el desarrollo de QD3D después de que Steve Jobs asumiera el cargo en 1998 y anunció que la futura compatibilidad con 3D en Mac OS se basaría en OpenGL .
OpenGL en la década de 1990
La API 3D estándar de la década de 1990 fue OpenGL. Desarrollada por SGI , inicialmente se ajustaba a las capacidades de sus estaciones de trabajo , funcionando como una capa de abstracción de hardware. La API de OpenGL consistía principalmente en instrucciones para configurar modos de dibujo, como el color o la posición de la cámara, y un sistema para enviar geometría al sistema, normalmente como mallas de triángulos. La combinación de estas instrucciones se guardaba en una lista de visualización que luego se procesaba para generar el resultado final.
OpenGL carecía de muchas características necesarias para crear un programa 3D completo. Guardar y cargar datos geométricos, agruparlos para generar objetos del modelo y controlar el estado recaían en el programador. Esto se consideraba una ventaja en una época en la que el rendimiento era limitado y el control directo de estas funciones permitía mejorarlo.
Sin embargo, esta falta de funcionalidad de alto nivel dificultó la escritura rápida de programas sencillos y provocó una falta de interoperabilidad. Se iniciaron varios esfuerzos para proporcionar API estandarizadas de alto nivel, como OpenGL++ y (más tarde) Fahrenheit , que gestionaban muchas de las tareas administrativas más comunes, como la carga de geometría desde archivos y la visualización. Estos sistemas estandarizados de grafos de escena permitieron que el programador solo tuviera que proporcionar la interfaz gráfica de usuario (GUI) del programa.
Aunque OpenGL es principalmente de bajo nivel, incluía algunos conceptos de alto nivel que solo se utilizaban en sistemas SGI. Esto dio lugar a una serie de API que eliminaron estas características para facilitar su implementación en hardware común. La más conocida es MiniGL , que no es una API independiente, sino simplemente una lista de las funciones de OpenGL que tienen compatibilidad garantizada con todo el hardware, asegurando así que un programa que se limite a esas llamadas se ejecute con el máximo rendimiento.
QD3D
QD3D se diseñó desde el principio para funcionar en ordenadores con mucha menos potencia que las estaciones de trabajo. Esto impulsó un esfuerzo conjunto para separar claramente las capas superior e inferior de la API, con el sistema RAVE de nivel inferior más similar a MiniGL desde el principio. Esto tuvo la ventaja de proporcionar una API limpia y minimalista que se podía portar más fácilmente a diferentes plataformas.
Dado que solo era necesario adaptar RAVE, las API de la capa superior podían ser tan complejas como se deseara, y el sistema QD3D incluía un grafo de escena completo, un formato de archivo de modelo estandarizado, 3DMF, e incluso objetos GUI básicos que los utilizaban. Para escribir una aplicación sencilla en QD3D, el programador solo tenía que incluir algunas bibliotecas y luego colocar los elementos GUI en su programa usando ResEdit o herramientas similares.
Entre las funcionalidades adicionales se incluía un sistema de renderizado mediante complementos, que permitía a una aplicación renderizar una escena con diversos estilos. Sin modificar el modelo ni el código, los desarrolladores podían renderizar la misma escena de forma interactiva o (con los complementos adecuados) utilizando métodos como el trazado de rayos o el sombreado Phong.
La API QD3D era un sistema orientado a objetos basado en código C puro . Las distintas estructuras se diseñaron cuidadosamente para contener punteros a otros objetos importantes. Los objetos conocían todo el estado de dibujo necesario, eliminando así el código que normalmente se requeriría al desarrollar con OpenGL.
Como desventaja, la estructura de capas de QD3D introdujo problemas de rendimiento. Por ejemplo, el sistema almacenaba y configuraba automáticamente el estado de cada objeto antes de dibujarlo. Esto facilitaba mucho el desarrollo, pero también provocaba una caída del rendimiento sobre la que el desarrollador no tenía control directo. Las aplicaciones que priorizaban el rendimiento sobre la facilidad de programación podían optar por usar directamente la capa RAVE.
Otro aspecto preocupante es que el grafo de escena quedaba oculto, y se pueden lograr mejoras considerables en el rendimiento de renderizado mediante una cuidadosa selección de objetos que no están a la vista. Si bien las versiones posteriores de QD3D incorporaron la capacidad de realizar automáticamente la selección de objetos invisibles (basada en la agrupación de objetos en el grafo de escena), la falta de compatibilidad de OpenGL con esta función generalmente obligaba a los desarrolladores a implementarla desde el principio.
Cambiar a OpenGL
Un buen rendimiento 3D de bajo nivel depende no solo de que el programador proporcione modelos eficientes, sino también de controladores de alta calidad para el hardware. Si bien RAVE se diseñó para ser multiplataforma, solo los desarrolladores de hardware compatibles con Mac ( ATI , NVIDIA y 3dfx ) produjeron controladores para él. Esto hizo que cualquier comparación entre QD3D y las API alternativas fuera unilateral, ya que fuera de Mac, QD3D se vio obligado a recurrir a una implementación de RAVE por software.
A medida que OpenGL ganaba terreno en Windows (a menudo gracias a id Software , que impulsó esta API frente a D3D), los desarrolladores de hardware diseñaban cada vez más hardware futuro teniendo en cuenta las futuras funcionalidades previstas para D3D de Microsoft. Mediante su mecanismo de extensión, OpenGL pudo seguir estos cambios con relativa facilidad, mientras que las funcionalidades de RAVE permanecieron relativamente fijas.
En la Macworld Expo de enero de 1999, Apple anunció que ni QuickDraw 3D ni RAVE se incluirían en Mac OS X. La compañía despidió al personal de desarrollo en junio de 1999 , reemplazando la tecnología propia con OpenGL tras adquirir una implementación para Mac y personal clave de Conix Enterprises .
Tras la retirada del soporte de Apple para QD3D, se desarrolló externamente una implementación de código abierto de la API de QD3D. Conocida como Quesa , esta implementación combina los conceptos de alto nivel de QD3D con un renderizador OpenGL. Además de la aceleración de hardware multiplataforma, esta biblioteca también permite el uso de la API de QD3D en plataformas que nunca fueron compatibles con Apple (como Linux ). La última actualización es de 2023. [ 3 ]
Aplicaciones
Entre los cientos de aplicaciones publicadas que emplean RAVE se encuentran:
- Calculadora gráfica en la década de 1990, incluida con cada Power Macintosh.
- Terremoto
- Descenso II
- Irreal
- Carmageddon 2
- Policía del futuro: LAPD
- Carrera de agua
- StrataVision 3D
- Infini-D
- Bugdom
Véase también
Referencias
- ↑ "3D: ¿Qué le pasó a Apple?" . Bloomberg . 25 de septiembre de 1995.
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "El rincón de los videojuegos encubiertos - Entrevista: Brian Greenstone, Parte 2" . 25 de junio de 1999.
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ^ "jwwalker/Quesa LÉAME" . GitHub . Consultado el 4 de junio de 2023 .
Enlaces externos
- Programación de gráficos 3D con QuickDraw 3D 1.5.4 — Manual de QD3D (archivado)
- QuickDraw 3D: Una nueva dimensión para los gráficos de Macintosh — artículo previo a su lanzamiento, junio de 1995
- QuickDraw 3D: Preguntas y respuestas
- Página principal del proyecto Quesa
- Página principal del proyecto Pomme : una bifurcación de Quesa, utilizada para adaptar el juego de Pangea Software a plataformas modernas.
- API de grafos de escena 3D
- API de sistemas operativos Macintosh