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 ).

Especificación

En su OpenGL llano más básico está una especificación, significarla es simplemente un documento que describe un sistema de las funciones y de los comportamientos exactos que deben realizar. De esta especificación, los vendedores de hardware crean el &mdash de las puestas en práctica; bibliotecas de las funciones creadas para emparejar las funciones indicadas en la especificación de OpenGL, haciendo uso de la aceleración del hardware en lo posible. Los vendedores de hardware tienen que resolver pruebas específicas para poder calificar su puesta en práctica como puesta en práctica de 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.

Diseño

OpenGL responde a dos propósitos principales:
Para ocultar las complejidades de la interconexión con diversos aceleradores 3D, presentando el programador con un API solo, uniforme.
Para ocultar las capacidades de diferenciación de las plataformas de hardware, requiriendo que todas las puestas en práctica apoyan el sistema completo de la característica de OpenGL (usar la emulación del software en caso de necesidad).

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.

  • Operaciones de la cima, transformándolas y encendiendo dependiendo de su material. También acortar las partes no visibles de la escena para producir el volumen de la visión.
  • Rasterisation o conversión de la información anterior en los pixeles. Los polígonos son representados por el color apropiado por medio de algoritmos de la interpolación.
  • operaciones del Por-fragmento, como la puesta al día de valores dependiendo de valores entrantes y previamente almacenados de la profundidad, o combinaciones de color, entre otros.
  • En el último, los fragmentos se insertan en el almacenador intermediario de capítulo.

    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.

    Ejemplo

    Este ejemplo dibujará un cuadrado verde en la pantalla. OpenGL tiene varias maneras de lograr esta tarea, pero esto es el más fácil de entender.

    lang=" del glClear (GL_COLOR_BUFFER_BIT); el de esta declaración despeja el almacenador intermediario del color, de modo que la pantalla comience el espacio en blanco.

    lang=" del glMatrixMode (GL_PROJECTION); Los comandos subsecuentes de la matriz de/* afectarán a la matriz de la proyección * glLoadIdentity (); /* inicializan la matriz de la proyección a la identidad * glFrustum (-1, 1, -1, 1, 1, 1000); /* aplican una matriz de la perspectiva-proyección * el de estas declaraciones inicializa la matriz de la proyección, fijando una matriz del tronco 3d que represente el área visible. Esta matriz transforma objetos del espacio cámara-relativo al espacio de la proyección de OpenGL.

    lang=" del glMatrixMode (GL_MODELVIEW); Los comandos subsecuentes de la matriz de/* afectarán a la matriz del modelview * glLoadIdentity (); /* inicializan el modelview a la identidad * glTranslatef (0, 0, -3); /* traducen las unidades del modelview 3 a lo largo del eje de Z * el de estas declaraciones inicializa la matriz del modelview. Esta matriz define una transformación de coordenadas modelo-relativos al espacio de la cámara. La combinación de la matriz del modelview y de la matriz de la proyección transforma objetos del espacio modelo-relativo al espacio de la pantalla de proyección.

    lang=" del glBegin (GL_POLYGON); /* comienzan a publicar un polígono * glColor3f (0, 1, 0); /* fijó el color actual para ponerse verde * glVertex3f (-1, -1, 0); Edición de/* una cima * glVertex3f (-1, 1, 0); Edición de/* una cima * glVertex3f (1, 1, 0); Edición de/* una cima * glVertex3f (1, -1, 0); Edición de/* una cima * glEnd (); Final de/* que publica el polígono * el de estos comandos dibuja un cuadrado verde en el plano XY.

    Documentación

    El renombre de OpenGL es parcialmente debido a la excelencia de su documentación oficial. El OpenGL ARB lanzó una serie de manuales junto con la especificación que se han puesto al día para seguir cambios en el API. Éstos son sabidos casi universal por los colores de sus cubiertas:

    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 .

    Extensiones

    El estándar de OpenGL permite que los vendedores individuales proporcionen funcionalidad adicional con las extensiones del mientras que se crea la nueva tecnología. Las extensiones pueden introducir nuevas funciones y nuevos constantes, y pueden relajar o quitar restricciones en las funciones existentes de OpenGL. Cada vendedor tiene una abreviatura alfabética que se utilice en el nombramiento de sus nuevos funciones y constantes. Por ejemplo, la abreviatura de NVIDIA ( nanovoltio ) se utiliza en la definición de su 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.

    Bibliotecas para uso general asociadas

    Varias bibliotecas se construyen encima o al lado de OpenGL para proporcionar las características no disponibles en OpenGL sí mismo. Las bibliotecas tales como GLU se pueden encontrar siempre con las puestas en práctica de OpenGL, y otras tales como SUPERABUNDANCIA y SDL han crecido en un cierto plazo y proporcionan visualización en una ventana de la plataforma y funcionalidad cruzadas rudimentarias del ratón y si es inasequible se pueden transferir y agregar fácilmente a un entorno de desarrollo. La funcionalidad gráfica simple del interfaz utilizador se puede encontrar en bibliotecas como el GLUI o el FLTK . Todavía otras bibliotecas como el AUX. son desaprobadas y han sido reemplazadas por la funcionalidad comúnmente disponible en bibliotecas más populares, pero el código usar ellas todavía existe, particularmente en clases particulares simples. Otras bibliotecas se han creado para proporcionar los reveladores de uso de OpenGL los medios simples de manejar las extensiones de OpenGL y de versioning. Los ejemplos de estas bibliotecas incluyen el GLEW (la biblioteca del Wrangler de la extensión de OpenGL) y el JÚBILO (la biblioteca fácil de la extensión de OpenGL).

    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.

    Atascamientos

    Para acentuar sus características multilingues y de la multi-plataforma, los varios atascamientos y los puertos se han desarrollado para OpenGL en muchas idiomas. Algunas idiomas y sus atascamientos son:
    Ada : Ada OpenGL del 1.1 ayudas GL, GLU y SUPERABUNDANCIA de * C# : El Tao del marco para el Microsoft .NET incluye OpenGL entre otras bibliotecas de las multimedias * D : Ver a los atascamientos y a derrelicto del proyecto
    Delphi : Punto * FORTRAN : el f90gl apoya OpenGL 1.2 y la SUPERABUNDANCIA 3.7 * FreeBASIC : Ayuda nativa de OpenGL. Creación incorporada del contexto de OpenGL.
    Haskell : El HOpenGL apoya GL, GLU y SUPERABUNDANCIA. Incluido con la última versión del recopilador de Glasgow Haskell. * Java : Atascamientos de Java para OpenGL (JSR 231) y Java OpenGL (JOGL)
    Biblioteca ligera (LWJGL) del juego de Java
    El balbucea : Ver OpenGL para el campo común balbucear
    Esquema : Huevo del pollo
    Mtogl del prólogo del Mercury
    Perl : Módulo del Perl OpenGL (POGL) - liberaciones compartidas escritas en C
    C contra el Perl y el Perl contra pruebas patrones del pitón
    Pike : Tiene un interfaz del natural de OpenGL. Por otra parte, apoya GLU y SUPERABUNDANCIA * PHP : Ver http://phpopengl.net/
    PureBasic : Ayuda nativa de OpenGL.
    Pitón : El PyOpenGL apoya GL, GLU y SUPERABUNDANCIA * rubí : Ver - las ayudas GL, GLU y SUPERABUNDANCIA
    Palique según lo visto en el proyecto del croquet que funciona en palique del chirrido
    Visual Basic : Control de ActiveX
    Edición visual del anuncio publicitario del prólogo

    Para más información sobre atascamientos de la lengua de OpenGL, ver opengl.

    Funcionalidad de alto nivel

    OpenGL fue diseñado para ser salida-solamente gráfica: proporciona solamente funciones de la representación . La base API no tiene ningún concepto de audio de los sistemas de la visualización en una ventana, la impresión a la pantalla, el teclado/el ratón u otros dispositivos de entrada mientras que ésta parece restrictiva al principio, él permite el código que hace la representación para ser totalmente independiente del sistema operativo que está funcionando encendido, permitiendo el desarrollo de la cruz-plataforma. Sin embargo una cierta integración con el sistema nativo de la visualización en una ventana se requiere para permitir la interacción limpia con el sistema huesped. Esto se realiza con los APIs adicionados siguientes:
    GLX - X11 del

    (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.

    Historia

    En los años 80, el software que se convertía que podría funcionar con una amplia gama del hardware de los gráficos era un reto real. Los analistas de programas informáticos escribieron interfaces y los conductores de encargo para cada pedazo de hardware. Éste era costoso y dado lugar a mucha duplicación de los esfuerzos.

    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.

    OpenGL 3.0

    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.

    Poste OpenGL 3.0

    Hay planes para agregar más funcionalidad a OpenGL más allá de GL 3.

    Desea el pico recargado

    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.

    Mt Evans

    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.

    Miembros del grupo de Khronos

    En 2006, algo del grupo de trabajo de OpenGL ARB estaba:
    Advanced Micro Devices (AMD)
    Apple
    Laboratorios creativos
    Remedio gráfico
    Intel Corporation
    Software de la identificación
    NVIDIA
    Sony Computer Entertainment
    Sun Microsystems
    Texas Instruments Para una lista completa y actualizada del proyecto los miembros consideran los promotores, los contribuidores y la lista del miembro del académico del grupo de Khronos.

    Representaciones de la muestra

    Juegos de OpenGL

    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

    Ver también


    ARB (GPU de lenguaje de ensamblaje) - lengua baja del shading de OpenGL
    GLSL - lengua de alto nivel del shading de OpenGL
    CG - lengua del shading de Nvidia que trabaja con OpenGL
    OpenGL ES - OpenGL para los sistemas encajados
    El OpenAL - la biblioteca audio abierta - diseñó trabajar bien con OpenGL.
    OpenSL ES - otra biblioteca audio.
    Tubería de los gráficos

    Bibliotecas de la ayuda de OpenGL

    SUPERABUNDANCIA - el juego de herramientas de la utilidad de OpenGL.
    SDL - la capa simple de DirectMedia.
    GLU - algunas funciones adicionales para los programas de OpenGL.
    GLEW - la biblioteca del Wrangler de la extensión de OpenGL.
    GLUI - un juego de herramientas del GUI hecho con SUPERABUNDANCIA
    GLFW - un marco portable para el desarrollo de aplicaciones de OpenGL.

    Otros APIs de los gráficos

    Mesa 3D - una puesta en práctica de la fuente abierta de OpenGL.
    Direct3D y comparación de OpenGL y de Direct3D - un competidor a OpenGL.
    VirtualGL

    .

  • Zenithic
  • OpenGL
    Random links:Carlsbad, New México | Fundación para el adelanto del arte | Moses Sofer | Plata libre | Hitomi Yoshizawa

  • © 2007-2008 enciclopediaespana.com; article text available under the terms of GFDL, from en.wikipedia.org
    ="http://pagead2.googlesyndication.com/pagead/show_ads.js">