El OpenGL ( abierto L del raphics de G ibrary) es una especificación estándar que define un en las diferentes lenguas API de la Cruz-plataforma para los usos de la escritura que producen el los 2.os gráficos de computadora de y 3D . El interfaz consiste en sobre 250 diversas llamadas de función que se puedan utilizar para extraer escenas tridimensionales complejas de los primitivos simples . OpenGL fue desarrollado por el Silicon Graphics Inc. (SGI) en 1992 y es ampliamente utilizado en el cad, la realidad virtual, la visualización científica, la visualización de la información, y la simulación del vuelo. También se utiliza en los juegos video, donde compite con el Direct3D en las plataformas de Microsoft Windows (véase el Direct3D contra OpenGL ).
Las puestas en práctica vendedor-proveídas eficientes de OpenGL (que hace uso del hardware de la aceleración de los gráficos en mayor o menor medida) existen para OS, Windows, linux, muchas plataformas de Unix, y PlayStation del mac 3 . Las varias puestas en práctica del software existen, trayendo OpenGL a una variedad de plataformas que no tengan ayuda del vendedor. Notablemente, el software libre /el Mesa 3D de la biblioteca de la fuente abierta es los gráficos completamente basados en programas API que sea código-compatible con OpenGL. No obstante para evitar autorizar costes se asoció formalmente a llamarse una puesta en práctica de OpenGL, demanda simplemente ser un " mismo similar" API.
La especificación de OpenGL fue revisada por el comité examinador de la arquitectura de OpenGL ( ARB ) fundado en 1992. El ARB fue formado por un sistema de compañías interesadas en la creación de un constante y extensamente - API disponible. El Microsoft, uno de los miembros fundadores, dejó el proyecto en 2003.
En el el 2006 del 21 de septiembre, control de OpenGL pasó al grupo de Khronos. Esto fue hecha para mejorar la comercialización de OpenGL, y eliminar barreras entre el desarrollo de OpenGL y el OpenGL ES . El subgrupo de Khronos que maneja OpenGL fue llamado el grupo de trabajo de OpenGL ARB del, por razones históricas. Hay una lista de miembros que compongan a grupo de trabajo de OpenGL ARB en los miembros de la sección del grupo de Khronos. OpenGL es los fines generales API con las porciones de diversas posibilidades debido a el gran número de compañías con diversos intereses que han compuesto al ARB viejo y a grupo actual también.
Marcar Segal y el Kurt Akeley fue autor de la especificación original de OpenGL. Chris Frazier corrigió la versión 1. La sanguijuela de Jon corrigió las versiones 1.2 con la versión actual 2. La sanguijuela de Jon se ha retirado como secretaria del ARB viejo, y Barthold Lichtenbelt ha tomado su lugar mientras que silla del grupo de manejo de Khronos OpenGL ARB.
La operación básica de OpenGL es aceptar primitivos tales como puntos, líneas y polígonos, y los convierte en los pixeles. Esto es hecha por una tubería de los gráficos conocida como la máquina de estado de OpenGL. La mayoría del OpenGL ordena cualquier primitivos de la edición a la tubería de los gráficos, o configura cómo la tubería procesa estos primitivos. Antes de la introducción de OpenGL 2.0, cada etapa de la tubería realizó una función fija y era configurable solamente dentro de límites apretados.0 ofrece varias etapas que sean completamente programables usar el GLSL .
OpenGL es un API bajo, procesal, requiriendo al programador dictar los pasos exactos requeridos para rendir una escena. Esto pone en contraste con (el gráfico de la escena del aka o el modo conservado ) los APIs descriptivos, donde un programador necesita describir una escena y puede solamente dejar la biblioteca manejar los detalles de la representación él. El diseño bajo de OpenGL requiere a programadores tener un buen conocimiento de la tubería de los gráficos, pero también da una cantidad determinada de libertad a los algoritmos nuevos de la representación del instrumento.
OpenGL ha sido históricamente influyente en el desarrollo de los aceleradores 3D, promoviendo un nivel bajo de funcionalidad que ahora es campo común en hardware del consumidor-nivel:
Puntos, líneas y polígonos de Rasterised como primitivos básicos
Un transforman y la tubería de la iluminación
Z-buffering
Textura que traza
de mezcla alfa
Una breve descripción del proceso en la tubería de los gráficos podía ser: La evaluación en caso de necesidad, de las funciones polinómicas que definen ciertas entradas, como el NURBS emerge, aproximando curvas y la geometría superficial.
Muchos aceleradores modernos 3D proporcionan funcionalidad lejos sobre esta línea de fondo, pero estas nuevas características son generalmente realces de esta tubería básica algo que reinvenciones radicales de ella.
lang=" del
lang=" del
lang=" del
lang=" del
el libro rojo - guía de programación de OpenGL, 5ta edición. ISBN 0-321-33573-2
: Un libro legible de la clase particular y de consulta - éste es “debe tener” libro para los programadores de OpenGL. La primera edición es accesible en línea aquí y aquí.
El libro azul - manual.N-POS=30 de referencia de OpenGL, 4ta edición. ISBN 0-321-17383-X
: Esencialmente un listado hard-copy de las páginas del hombre para OpenGL.
: Incluye un diagrama fold-out cartel-clasificado que demuestra la estructura de una puesta en práctica idealizada de OpenGL. Está disponible aquí.
El Libro verde - OpenGL que programa para el sistema de la ventana de X. ISBN 0-201-48359-9
: Un libro acerca de X11 que interconecta y de la SUPERABUNDANCIA .
El libro alfa (que tiene realmente una cubierta blanca) - OpenGL que programa para Windows 95 y Windows NT. ISBN 0-201-40709-4
: Un libro acerca de interconectar OpenGL con Microsoft Windows.
Entonces, para OpenGL 2.0 y más allá:
el libro anaranjado - la lengua del Shading de OpenGL. ISBN 0-321-33489-2
: Un libro legible de la clase particular y de consulta para el GLSL .
glCombinerParameterfvNV propietario de la función () y su GL_NORMAL_MAP_NV constante. Puede suceder que más de un vendedor acuerda ejecutar la misma funcionalidad extendida. En ese caso, se utiliza la extensión del de la abreviatura. Puede suceder más lejos que el " del comité examinador de la arquitectura; blesses" la extensión. Entonces se conoce como extensión estándar del, y se utiliza el ARB de la abreviatura. La primera extensión de ARB era GL_ARB_multitexture, introducido en la versión 1. Después de la trayectoria oficial de la promoción de la extensión, el multitexturing es no más una extensión opcionalmente ejecutada de ARB, pero ha sido una parte de la base API de OpenGL desde la versión 1.
Antes de usar una extensión un programa debe primero determinar su disponibilidad, y después obtiene indicadores a cualquier nueva función que la extensión defina. El mecanismo para hacer esto es platform-specific y las bibliotecas tales como GLEW y JÚBILO existen para simplificar el proceso.
Las especificaciones para casi todas las extensiones se pueden encontrar en el registro oficial de la extensión.
Además de las bibliotecas simples ya mencionadas, el otro orientado al objeto de alto nivel del gráfico de la escena conservado las bibliotecas del modo existe por ejemplo el PLIB, el OpenSG, el OpenSceneGraph, y el ejecutante de OpenGL. Éstos están disponibles como la plataforma cruzada libre/la fuente abierta o interfaces de programación propietarios escritos encima de OpenGL y de bibliotecas de sistemas para permitir la creación de los usos en tiempo real de la simulación visual .
El Mesa 3D es una puesta en práctica de la fuente libre/abierta de OpenGL. Apoya la representación pura del software así como el abastecimiento de la aceleración del hardware para varias tarjetas gráficas 3D debajo del linux . En fecha el 2007 del 22 de junio ejecuta el estándar 2.1, y proporciona algunas de sus propias extensiones para algunas plataformas.
Para más información sobre atascamientos de la lengua de OpenGL, ver opengl.
(transparencia incluyendo de la red)
WGL - Microsoft Windows
CGL - mac OS x . Una mejor integración con los armazones del uso del x del OS del mac es proporcionada por APIs acodado encima de CGL: AGL para el carbón y NSOpenGL para el cacao .
Además la SUPERABUNDANCIA y las bibliotecas SDL proporcionan la funcionalidad para la visualización en una ventana básica usar OpenGL, de una manera portable.
Por el principio de los 90, el Silicon Graphics (SGI) era un líder en los gráficos 3D para los sitios de trabajo. Su DIAFRAGMA GL API era considerado el estado plus ultra y se convirtió en el estándar industrial de hecho, eclipsando el estándar-basado abierto PHIGS . Esto era porque el DIAFRAGMA GL era considerado más fácil utilizar, y porque apoyó la representación inmediata del modo . Por el contrario, el PHIGS era considerado difícil utilizar y anticuado en términos de funcionalidad.
Los competidores del SGI ( incluyendo Sun Microsystems, Hewlett-Packard y IBM ) podían también traer para poner el hardware 3D, apoyado por las extensiones hechas al estándar PHIGS . Esta alternadamente cuota de mercado causada del SGI a debilitarse como más surtidores del hardware de los gráficos 3D incorporaron el mercado. En un esfuerzo para influenciar el mercado, el SGI decidía a dar vuelta al IrisGL API en un estándar abierto.
El SGI consideraba que el IrisGL API sí mismo no era conveniente para la abertura debido a las ediciones de la autorización y de patente. También, el IrisGL tenía funciones del API que no eran relevantes a los gráficos 3D. Por ejemplo, incluyó una visualización en una ventana, un teclado y un ratón API, en parte porque fue desarrollado antes del sistema de la ventana X y los sistemas de las noticias de Sun fue desarrollado.
Además, el SGI tenía una gran cantidad de clientes del software; cambiando al OpenGL API planearon mantener a sus clientes trabados sobre el hardware del SGI (y IBM) por algunos años mientras que la ayuda de mercado para OpenGL se maduró. Mientras tanto, el SGI continuaría intentando mantener a sus clientes atados al hardware del SGI desarrollando el inventor avanzado y propietario del diafragma y los APIs programados del ejecutante del diafragma.
Consecuentemente, el SGI lanzó el estándar de OpenGL .
El acceso estandardizado OpenGL al hardware, y empujado la responsabilidad del desarrollo de los programas de interfaz de hardware, a veces llamada los drivers de dispositivo a los fabricantes de hardware y a la visualización en una ventana delegada funciona al sistema operativo subyacente. Con tan muchas diversas clases de hardware gráfico, conseguirlas todas para hablar la misma lengua de esta manera tenían un impacto notable dando a analistas de programas informáticos una plataforma de alto nivel para el desarrollo 3D-software.
En 1992, el SGI llevó a la creación del comité examinador arquitectónico de OpenGL (OpenGL ARB), a grupo de compañías que mantendrían y amplía la especificación de OpenGL por próximos años. OpenGL se desarrolló (y es muy similar en estilo a) del interfaz anterior 3D, del SGI IrisGL . Una de las restricciones de IrisGL era que proporcionó solamente el acceso a las características apoyadas por el hardware subyacente. Si el hardware de los gráficos no apoyó una característica, después el uso no podría utilizarla. OpenGL superó este problema proporcionando la ayuda en el software para las características sin apoyo por el hardware, permitiendo que los usos utilicen gráficos avanzados en sistemas relativamente bajo-accionados.
En 1994 el SGI jugó con la idea de lanzar algo " llamado; OpenGL++ " qué elementos incluidos tales como un escena-gráfico API (basado probablemente alrededor de su tecnología del ejecutante ). La especificación fue circulada entre algunas partes interesadas - pero nunca dada vuelta en un producto.
El Microsoft lanzó el Direct3D en 1995, que se convirtió en el competidor principal de OpenGL. El el el 17 de diciembre, el 1997, Microsoft y SGI inició el proyecto de Fahrenheit, que era un esfuerzo conjunto con la meta de unificar los interfaces de OpenGL y de Direct3D (y de agregar un escena-gráfico API también). En Hewlett-Packard 1998 unida el proyecto. Demostró inicialmente una cierta promesa de traer orden al mundo de los APIs interactivos de los gráficos de computadora 3D, pero a causa de dificultades financieras en el SGI, las razones estratégicas en Microsoft, y carencia general de la ayuda de la industria, fue abandonado en 1999.0 fue concebido por el 3Dlabs para tratar preocupaciones que OpenGL se estancaba y careció una dirección fuerte. 3Dlabs propuso un número de adiciones importantes al estándar. La mayor parte de éstos, cuando, fueron rechazados por el ARB o de otra manera nunca vinieron a la fruición en la forma que 3Dlabs propuso. Sin embargo, su oferta para un C - la lengua del shading del estilo fue terminada eventual, dando por resultado la formulación actual GLSL (el hading L anguage de, también ANG del S del GL de Open del sl ). Como montaje-como las idiomas del shading que substituía, permitió que el programador substituyera la pipa de la cima y del fragmento de la fijo-función por el Shaders, aunque este vez escrito en el A.
El diseño de GLSL era notable para hacer relativamente pocas concesiones a las limitaciones del hardware entonces disponibles; esto hearkened de nuevo a la tradición anterior de OpenGL que fijaba una blanco ambiciosa, moderna para los aceleradores 3D algo que simplemente siguiendo el estado del hardware actualmente disponible. La especificación final de OpenGL 2.0 incluye la ayuda para GLSL.1 fue lanzado en el 2006 del 2 de agosto y es posterior - compatible con todas las versiones anteriores de OpenGL.1 incorpora la funcionalidad siguiente:
Revisión 1.20 de la lengua del Shading de OpenGL ( GLSL )
Comandos de especificar y de preguntar los uniformes de la matriz del no-cuadrado para el uso con la lengua del Shading de OpenGL
Objetos del almacenador intermediario del pixel para las transferencias de imagen eficientes a y desde los objetos del almacenador intermediario para los comandos tales como glTexImage2D y glReadPixels.
: Esta funcionalidad corresponde a la extensión de ARB_pixel_buffer_object.
Formatos de la textura SRGB .
: Esta funcionalidad corresponde a la extensión de EXT_texture_sRGB.
La más nueva revisión del OpenGL API será OpenGL 3.0, conocido antes como desea el del código máximo. Debía inicialmente ser concluido en septiembre de 2007, pero el grupo de Khronos anunció el 30 de octubre que había funcionado con en varias ediciones que deseaba abordar antes del lanzamiento y está evaluando de nuevo actual la especificación. Consecuentemente espec. no estará probablemente disponible hasta el principio de 2008.0 representa la primera revisión del comandante API en el curso de la vida de OpenGL. Consiste en refactoring de la manera que los trabajos de OpenGL, del modelo de objeto a los shaders. Para apoyar compatibilidad hacia atrás, todo el viejo API todavía estará disponible. Sin embargo, no se expondrá ninguna nueva funcionalidad vía el viejo API en versiones posteriores de OpenGL.0 cambia fundamental el API de virtualmente cada manera. Cualquier funcionalidad fija que OpenGL 2.1 también proporcionó un interfaz del shader para se ha quitado a favor shader-only de un acercamiento. Se ha aerodinamizado El API, diseñado a ambos simplificar el desarrollo de aplicaciones y facilitar la carga en puestas en práctica.
El cambio más grande de una perspectiva del API es la confianza en objetos. El modelo de objeto de GL 2.1 fue construido sobre el diseño estado-basado de OpenGL. Es decir, para modificar un objeto o utilizarlo, uno necesitó atar el objeto al sistema del estado, después hace modificaciones al estado o realiza las llamadas de función que utilizan el objeto encuadernado. Esto hizo difícil para que las puestas en práctica de OpenGL sepan cuándo un objeto estaba limitado para el uso o para la modificación.
También, porque la herencia del modelo de objeto era el sistema del estado de OpenGL, se opone tuvo que ser mutable. Es decir, la estructura básica de un objeto podría cambiar en cualquier momento, incluso si la tubería de la representación asincrónico utilizaba ese objeto. Un objeto de la textura se podía redefinir a partir de la 2. Esto requirió que las puestas en práctica puedan dejar huérfano los objetos internos ellos mismos, que agregaron un grado de complejidad a la gerencia interna del objeto.
El nuevo modelo de objeto 3.0 elimina ambas ediciones. Los objetos, una vez que están creados, son básicamente inmutables.o objeto de la textura de una resolución y de un formato del sistema por siempre, aunque puede ser destruida o hacer su contenido de la textura poner al día con nuevos datos de imagen.
Esto requiere el cambio de una porción substancial del OpenGL API. Este cambio, centrado alrededor del nuevo modelo de objeto, representa un cambio lejos de un sistema estado-basado y a un sistema objeto-basado.
La creación del objeto llega a ser atómica; una sola llamada de función crea un objeto completamente formado. El objeto que comparte a través de contextos de la representación se especifica en el nivel del por-objeto; esto no prohibe a puesta en práctica la capacidad de utilizar las llamadas de función roscar-seguras para esos objetos. La creación atómica del objeto es alcanzada creando un objeto de la plantilla de un tipo particular. Los objetos de la plantilla son similares a los structs en C, a menos que puedan ser extendidos con los campos adicionales sin recompiling. Las cualidades se fijan en el objeto de la plantilla, apenas pues los campos en un struct pueden ser fijados. El objeto de la plantilla entonces se pasa a una función apropiada de la creación del objeto para ese tipo de objeto particular de la plantilla.
La creación del objeto es también el asincrónico. La puesta en práctica se permite comenzar la creación del objeto en otro hilo de rosca. La manija al objeto sigue siendo válida incluso si el objeto no ha acabado ser creado. La representación puede ocurrir con los objetos que todavía no se han creado, puesto que la representación de OpenGL es ya un proceso asincrónico.
Para las funciones que se utilizan para modificar la porción flexible de objeto inmutable, por ejemplo el contenido de una imagen, las funciones toman el objeto como parámetro. Aquí es en comparación con el estilo de GL 2.1 donde el objeto se debe limitar al contexto si se va a ser modificado o a ser preguntado. Los objetos todavía están limitados al contexto para para ser utilizados para la representación.
Hay planes para agregar más funcionalidad a OpenGL más allá de GL 3.
Esta revisión, debida ser lanzado 2-3 meses después de 3.0, exigirá el agregar de características más pequeñas a 3.0 que no se podrían agregar en el calendario para el lanzamiento 3. Son sobre todo las características de empleo fácil que hacen el API más conveniente utilizar, aunque existen algunas características para los propósitos del funcionamiento también.
Esta revisión, debida ser lanzado 3-5 meses después de 3.0 hasta la fecha con características de hardware más modernas. Éstos incluyen shaders de la geometría, números enteros en shaders, órdenes de la textura, y la representación citada como ejemplo.
Algunos juegos notables que incluyen un renderer de OpenGL incluyen:
ejército de América
Puerta 2 - defectos de Baldur a D3D
Llamada del deber
Ciudad de los héroes
Ciudad de los bandidos
El Counter-Strike
Darwinia
Condenación 3
Fortaleza enana
Territorio enemigo: El temblor guerrea
Grito lejano - defectos a D3D
Trastes en el fuego
FlightGear
Período (no período 2 )
Homeworld 2
Noches de Neverwinter
Presa
Serie del temblor
Rabia
Sam serio
Sam serio 2 - defectos a D3D
Starsiege: Tribus
Caballero de Star Wars Jedi: Academia de Jedi
Ultima IX: Ascensión
Serie irreal
Warcraft 3 - defectos a D3D en Windows
Wolfenstein: Territorio enemigo
Mundo de Warcraft - defectos a D3D en Windows
.
| Random links: | Carlsbad, New México | Fundación para el adelanto del arte | Moses Sofer | Plata libre | Hitomi Yoshizawa |