b"\n_START_ARTICLE_\nOpenGL\n_START_SECTION_\nEspecificaci\xc3\xb3n\n_START_PARAGRAPH_\nFundamentalmente OpenGL es una especificaci\xc3\xb3n, es decir, un documento que describe un conjunto de funciones y el comportamiento exacto que deben tener. Partiendo de ella, los fabricantes de hardware crean implementaciones, que son bibliotecas de funciones que se ajustan a los requisitos de la especificaci\xc3\xb3n, utilizando aceleraci\xc3\xb3n hardware cuando es posible. Dichas implementaciones deben superar unos tests de conformidad para que sus fabricantes puedan calificar su implementaci\xc3\xb3n como conforme a OpenGL y para poder usar el logotipo oficial de OpenGL._NEWLINE_Hay implementaciones eficientes de OpenGL para Mac OS, Microsoft Windows, GNU/Linux, varias plataformas Unix y PlayStation 4. Existen tambi\xc3\xa9n varias implementaciones en software que permiten ejecutar aplicaciones que dependen de OpenGL sin soporte de aceleraci\xc3\xb3n hardware. Es destacable la biblioteca de software libre / c\xc3\xb3digo abierto Mesa 3D, una API de gr\xc3\xa1ficos sin aceleraci\xc3\xb3n hardware y completamente compatible con OpenGL. Sin embargo, para evitar los costes de la licencia requerida para ser denominada formalmente como una implementaci\xc3\xb3n de OpenGL, afirma ser simplemente una API muy similar._NEWLINE_La especificaci\xc3\xb3n OpenGL era revisada por el OpenGL Architecture Review Board (ARB), fundado en 1992. El ARB estaba formado por un conjunto de empresas interesadas en la creaci\xc3\xb3n de una API consistente y ampliamente disponible. Microsoft, uno de los miembros fundadores, abandon\xc3\xb3 el proyecto en 2003._NEWLINE_El 21 de septiembre de 2006 se anunci\xc3\xb3 que el control de OpenGL pasar\xc3\xada del ARB al Grupo Khronos.\xe2\x80\x8b Con ello se intentaba mejorar el marketing de OpenGL y eliminar las barreras entre el desarrollo de OpenGL y OpenGL ES.\xe2\x80\x8b ARB se convirti\xc3\xb3 dentro de Khronos en el OpenGL ARB Working Group.\xe2\x80\x8b El subgrupo de Khronos que gestiona la especificaci\xc3\xb3n de OpenGL se denomina OpenGL ARB Working Group.\xe2\x80\x8b Para una relaci\xc3\xb3n de los miembros que componen el OpenGL ARB Working Group, v\xc3\xa9ase el apartado Miembros del Grupo Khronos. El gran n\xc3\xbamero de empresas con variados intereses que han pasado tanto por el antiguo ARB como por el grupo actual han hecho de OpenGL una API de prop\xc3\xb3sito general con un amplio rango de posibilidades._NEWLINE_Mark Segal y Kurt Akeley fueron los autores de la especificaci\xc3\xb3n original de OpenGL. Chris Frazier fue el editor de la versi\xc3\xb3n 1.1. Jon Leech ha editado las versiones desde 1.2 hasta la presente 3.0.\xe2\x80\x8b\n_START_SECTION_\nEjemplo\n_START_PARAGRAPH_\nNota: Cuidado, este ejemplo es \xc3\xbanicamente v\xc3\xa1lido con OpenGL 2.1 y versiones anteriores. Hace uso intensivo de funciones actualmente anticuadas._NEWLINE_Primero, limpiamos el buffer de color para empezar en un canvas negro:_NEWLINE_glClear( GL_COLOR_BUFFER_BIT );_NEWLINE_Se establece la matriz modelview, que controla la posici\xc3\xb3n de la c\xc3\xa1mara respecto a las primitivas que renderizamos. La retrasamos 3 unidades en el eje Z, dej\xc3\xa1ndola apuntando hacia el origen:_NEWLINE_glMatrixMode( GL_MODELVIEW ); /* Los comandos para matriz modificar\xc3\xa1n ''modelview'' */glLoadIdentity(); /* Inicializar ''modelview'' */glTranslatef( 0, 0, -3 ); /* Desplazar 3 unidades en el eje Z */_NEWLINE_La matriz projection controla la perspectiva aplicada a las primitivas; se utiliza de forma similar a la anterior:_NEWLINE_glMatrixMode( GL_PROJECTION ); /* Los comandos para matriz modificar\xc3\xa1n ''projection'' */glLoadIdentity(); /* Inicializar ''projection'' */glFrustum( -1, 1, -1, 1, 1, 1000 ); /* Aplicar una proyecci\xc3\xb3n en perspectiva */_NEWLINE_Por \xc3\xbaltimo, se dibuja un pol\xc3\xadgono (un cuadrado verde orientado en el plano XY):_NEWLINE_glBegin( GL_POLYGON ); /* Inicio de pol\xc3\xadgono */glColor3f( 0, 1, 0 ); /* Establecer color actual a verde */glVertex3f( -1, -1, 0 ); /* Establecer un v\xc3\xa9rtice */glVertex3f( -1, 1, 0 ); /* Establecer un v\xc3\xa9rtice */glVertex3f( 1, 1, 0 ); /* Establecer un v\xc3\xa9rtice */glVertex3f( 1, -1, 0 ); /* Establecer un v\xc3\xa9rtice */glEnd(); /* Fin de pol\xc3\xadgono */\n_START_SECTION_\nOpenGL 1.0\n_START_PARAGRAPH_\nPublicada en enero de 1992._NEWLINE__NEWLINE_La primera especificaci\xc3\xb3n de OpenGL fue publicada por Mark Segal y Kurt Akeley.\n_START_SECTION_\nOpenGL 3.3\n_START_PARAGRAPH_\nPublicada el 11 de marzo de 2010_NEWLINE_OpenGL 3.3, simult\xc3\xa1neamente lanzado con OpenGL 4.0 y complementada por un conjunto de nuevas extensiones ARB, porta tanta funcionalidad como es posible desde la especificaci\xc3\xb3n OpenGL 4.0 para su uso en la generaci\xc3\xb3n anterior de hardware GPU. Incluye GLSL 3.30.\n_START_SECTION_\nExtensiones\n_START_PARAGRAPH_\nEl est\xc3\xa1ndar OpenGL permite a los fabricantes a\xc3\xb1adir nuevas funcionalidades adicionales mediante extensiones conforme aparecen nuevas tecnolog\xc3\xadas. Dichas extensiones pueden introducir nuevas funciones y constantes, y suavizar o incluso eliminar restricciones en funciones ya existentes. Cada fabricante dispone de una abreviatura que le identifica en el nombre de sus nuevas funciones o constantes. Por ejemplo, la abreviatura de NVIDIA (NV) aparece en la definici\xc3\xb3n de su funci\xc3\xb3n glCombinerParameterfvNV() y su constante GL_NORMAL_MAP_NV._NEWLINE_Es posible que varios fabricantes se pongan de acuerdo en implementar la misma funcionalidad extendida. En ese caso, se usa la abreviatura EXT. Incluso puede ocurrir que el ARB adopte la extensi\xc3\xb3n, convirti\xc3\xa9ndose as\xc3\xad en est\xc3\xa1ndar y utilizando la abreviatura ARB en sus nombres. La primera extensi\xc3\xb3n ARB fue GL_ARB_multitexture, presentada en la versi\xc3\xb3n 1.2.1. Siguiendo el camino marcado por la extensi\xc3\xb3n, el multitexturing no es ya una extensi\xc3\xb3n opcional, sino que entr\xc3\xb3 a formar parte del n\xc3\xbacleo de OpenGL desde la versi\xc3\xb3n 1.3._NEWLINE_Antes de usar una extensi\xc3\xb3n, los programas deben comprobar su disponibilidad y, despu\xc3\xa9s, acceder a las nuevas funcionalidades ofrecidas. Este proceso es dependiente de la plataforma, pero bibliotecas como GLEW y GLEE lo simplifican._NEWLINE_Las especificaciones para la mayor parte de las extensiones pueden encontrarse en el registro oficial de extensiones.\xe2\x80\x8b"