Your SlideShare is downloading. ×
0
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Open gl
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Open gl

578

Published on

super

super

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
578
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. TRABAJO OPENGL
  • 2. OpenGl• es una especificación estándar que define una API multilenguaje y multiplataforma para escribir aplicaciones que produzcan gráficos 2D y 3D. La interfaz consiste en más de 250 funciones diferentes que pueden usarse para dibujar escenas tridimensionales complejas a partir de primitivas geométricas simples, tales como puntos, líneas y triángulos. Fue desarrollada originalmente por Silicon Graphics Inc. (SGI) en 19922 y se usa ampliamente en CAD, realidad virtual, representación científica, visualización de información y simulación de vuelo. También se usa en desarrollo de videojuegos, donde compite con Direct3D en plataformas Microsoft Windows.
  • 3. Historia• En los años 1980 el desarrollo de software que fuese compatible con un amplio rango de hardware gráfico era un verdadero reto para los desarrolladores. Había que tratar con interfaces muy diferentes y escribir drivers específicos para cada tipo de hardware, resultando muy costoso; por ello, se subcontrataban equipos de programadores para agilizar el desarrollo. Dado que cada equipo trabajaba por separado en sus interfaces, se producía mucho código redundante. Además, era un proceso caro, por lo que varios grupos innovadores aceptaron el reto de encontrar un método mejor.• Al principio de los años 1990 SGI era un grupo de referencia en gráficos 3D para estaciones de trabajo. Suya era la API IRIS GL,10 considerada puntera en el campo y estándar de facto, llegando a eclipsar a PHIGS, basada en estándares abiertos. IRIS GL se consideraba más fácil de usar y, lo más importante, soportaba renderizado en modo inmediato. Además, PHIGS, aparte de su mayor dificultad, fue considerada inferior a IRIS GL respecto a funcionalidad y capacidad.
  • 4. • La competencia de SGI (Sun Microsystems, Hewlett-Packard e IBM, entre otros) fue capaz de introducir en el mercado hardware 3D compatible con el estándar PHIGS mediante extensiones. Esto fue reduciendo la cuota de mercado de SGI conforme iban entrando diferentes proveedores en el mercado. Por todo ello, en un intento de fortalecer su influencia en el mercado, SGI decidió convertir el estándar IRIS GL en un estándar abierto.• SGI observó que la API IRIS GL no podía ser abierta debido a conflictos de licencias y patentes; también contenía funciones no relevantes para los gráficos 3D como APIs para ventanas, teclado o ratón (en parte, porque fue desarrollada antes de la aparición del X Window System o de los sistemas NeWS de Sun). Además, mientras iba madurando el soporte del mercado para el nuevo estándar, se pretendía mantener los antiguos clientes mediante bibliotecas añadidas como Iris Inventor o Iris Performer.
  • 5. El resultado de todo lo anterior fue el lanzamiento delestándar OpenGL.• Algunos de los logros que se consiguieron fueron:• Estandarizar el acceso al hardware.• Trasladar a los fabricantes la responsabilidad del desarrollo de las interfaces con el hardware.• Delegar las funciones para ventanas al sistema operativo.• Con la variedad de hardware gráfico existente, lograr que todos hablasen el mismo lenguaje obtuvo un efecto importante, ofreciendo a los desarrolladores de software una plataforma de alto nivel sobre la que trabajar.
  • 6. • En 1992,11 SGI lideró la creación del OpenGL Architecture Review Board (OpenGL ARB), grupo de empresas que mantendría y extendería la especificación OpenGL en los años siguientes. OpenGL evolucionó desde IRIS GL, superando su problema de dependencia del hardware al ofrecer emulación software para aquellas características no soportadas por el hardware del que se dispusiese. Así, las aplicaciones podían utilizar gráficos avanzados en sistemas relativamente poco potentes.• En 1994 SGI barajó la posibilidad de lanzar un producto denominado OpenGL++, el cual incluía elementos como una API de scene-graph (basada presumiblemente en la tecnología de Performer). Dicha especificación fue divulgada entre unos pocos grupos interesados, pero nunca apareció finalmente como producto.12• En 1995 Microsoft lanzó Direct3D, que se convertiría en el principal competidor de OpenGL. El 17 de diciembre de 199713 Microsoft y SGI iniciaron el proyecto Fahrenheit, esfuerzo cooperativo con el objetivo de unificar las interfaces de OpenGL y Direct3D (y añadir también una API scene-graph). En 1998 se uniría al proyecto Hewlett-Packard.14 Pese a tener un principio prometedor en estandarizar las APIs de gráficos 3D, debido a restricciones financieras en SGI y la falta general de apoyo por parte de la industria, fue finalmente abandonado en 1999.15
  • 7. Historia versiones• OpenGL 1.0• Publicada en enero de 1992. La primera especificación de OpenGL fue publicada por Mark Segal y Kurt Akeley.• OpenGL 1.1• Publicada en enero de 1997. OpenGL 1.1 se enfocó en el soporte de texturas y formatos de textura sobre hardware de GPU. Tarjetas gráficas soportadas: todas
  • 8. Extensión Id de extensión Funciones glVertexPointer, glColorPoiVertex Arrays EXT_vertex_array nter, glNormalPointerPolygon Offsets (depth EXT_polygon_offset glPolygonOffsetbiasing)RGBA logical blending EXT_blend_logic_op glBlendFunc EXT_subtexture,Texture Copy and Sub-copy glTexSubImage1D/2D/3D EXT_copy_texture RGB, LUMINANCE, ALPHA,Texture Formats EXT_texture INTENSITY (in glTexImage2D) glGenTextures,Texture Objects EXT_texture_object glBindTextures
  • 9. OpenGL 1.2Publicada el 16 de marzo de 1998.OpenGL 1.2 se enfocó en el soporte de texturas de volumen, píxeles empaquetados, reescaladonormal, muestreo de texturas clamped/edge y procesamiento de imágenes.Tarjetas gráficas soportadas: Rage 128, Rage 128 GL, Rage XL/XC, Rage 128 Pro, Rage Fury MAXX,y todas las tarjetas posteriores. Extensión Id de extensión Funciones 3D Volume Textures GL_EXT_texture3D glTexImage3DEXT BGR_EXT, BGRA_EXT (in BGRA Texture Format GL_EXT_bgra glTexImage2D) Packed Pixels GL_EXT_packed_pixels Normal Rescaling GL_EXT_rescale_normal GL_EXT_separate_specular Separate Specular Color _color Texture Coord Edge SGIS_texture_edge_clamp Clamping Texture LOD Control SGIS_texture_lod Draw Range Elements EXT_draw_range_elements glDrawRangeElements EXT_color_table, EXT_convolution, SGI_color_matrix, Image Processing Subset EXT_histogram, EXT_blend_color, EXT_blend_minmax
  • 10. OpenGL 1.2.1Publicada el 14 de octubre de 1998OpenGL 1.2.1 fue un lanzamiento menor publicado depués deOpenGL 1.2 (16 de marzo de 1998) el cual añadió multi-textura,o unidades de textura, al canal de renderizado. Esto permitiótexturas múltiples que son combinadas por píxel durante larasterización.Tarjetas gráficas soportadas: Radeon, Radeon Mobility, Radeon7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200,Radeon 9600, Radeon 9800, GeForce 3, GeForce 4Ti, GeForceFX, y todas las tarjetas posteriores Extensión Id de extensión Funciones glActiveTextureARB, Multi-Texturing SGIS_multitexture glClientActiveTextureARB
  • 11. • OpenGL 1.3• Publicada el 14 de agosto de 2001. OpenGL 1.3 añadió soporte para textura cubemap, múltiples texturas, multi-muestreo y operaciones de combinación de unidades de textura (añadir, combinar, dot3, border clamp). Tarjetas gráficas soportadas: Radeon 32/36, Radeon 64/7200, Radeon 7000, Radeo AIW, Radeon 7500, Radeon IGP 320M, Radeon IGP 345M, ES1000, Radeon 8500, Radeon 9000/Pro, Radeon 9100/9200/9250 (Pro & IGP), GeForce 3, GeForce 4Ti, GeForce FX, y todas las tarjetas posteriores.
  • 12. • OpenGL 1.4• Publicada el 24 de julio de 2002. OpenGL 1.4 añadió soporte de sombreado por hardware, coordenadas niebla, generación automática de mipmaps, y modos de textura adicionales. Tarjetas gráficas soportadas: Quadro DCC, Quadro4 380 XGL, Quadro4 500XGL, 550XGL, Quadro4 700XGL, 750XGL, 900XGL, 980XGL, y todas las tarjetas posteriores.
  • 13. • OpenGL 1.5• Publicada el 29 de julio de 2003. OpenGL 1.5 añadió soporte para objetos de búfer de vértice (VBOs), consultas de oclusión, y amplió las funciones de sombreado. Tarjetas gráficas soportadas: Radeon X800, Radeon 9600, Radeon 9700, Radeon 9800, GeForce FX, y todas las tarjetas posteriores.
  • 14. • OpenGL 2.0• OpenGL 2.0 añadió soporte para un lenguaje ensamblador basado en GPU verdadero, llamado ARB (diseñado por el Architecture Review Board), que se convertiría en el estándar para vertex y fragment shaders. Las tarjetas publicadas con OpenGL 2.0 fueron las primeras en ofrecer shaders programables por el usuario.• OpenGL 2.0 fue concebido por 3Dlabs para abordar las preocupaciones de que OpenGL estaba estancado y carecía de una dirección fuerte. 3Dlabs propuso una serie de importantes adiciones a la norma. La mayoría de estas fueron, en ese momento, rechazadas por el ARB o de otra manera nunca llegaron a realizarse en la forma que 3Dlabs propuso. Sin embargo, su propuesta de un lenguaje de sombreado de estilo C se completó con el tiempo, resultando en la formulación actual del GLSL (OpenGL Shading Language, también slang).Al igual que los lenguajes de sombreado estilo-ensamblador que trataba de sustituir, permite al programador sustituir los fixed-function vertex y el fragment pipe con shaders, aunque esta vez escritos en un lenguaje tipo C de alto nivel.• El diseño de GLSL se destacó por hacer relativamente pocas concesiones a las limitaciones del hardware entonces disponible, lo que recordaba a la tradición anterior de OpenGL estableciendo un objetivo ambicioso, con visión de futuro para los aceleradores 3D en lugar de simplemente seguir el estado de hardware disponible actualmente. La última especificación OpenGL 2.016 incluye soporte para GLSL.
  • 15. • OpenGL 2.1• El 2 de agosto de 2006 se publicó OpenGL 2.1. Siendo completamente compatible con las versiones anteriores, aporta además nuevas características como:• Revisión 1.20 del OpenGL Shading Language (GLSL).• Comandos que soportan la especificación de matrices no cuadradas.• Objetos Pixel buffer para acelerar el tráfico de imágenes en los buffers en comandos como glTexImage2D y glReadPixels.• Esta funcionalidad corresponde a la extensión ARB_pixel_buffer_object.Texturas sRGB.• Esta funcionalidad corresponde a la extensión GL_EXT_texture_sRGB.
  • 16. • OpenGL 3.0• OpenGL 3.1• La versión 3.1 (Longs Peak Reloaded) fue publicada el 24 de marzo de 2009, y presenta una serie de características para hacer la API más conveniente de utilizar, además de las características orientadas al rendimiento:• Lenguaje de Sombreado OpenGL revisión 1.40 (GLSL)• Texture Buffer Objects - un tipo de nueva textura que contiene una matriz unidimensional de texels• Uniform Buffer Objects para compartir o actualñizar datos de forma rápida• Texturas normalizadas firmadas (rango ± 1,0)• Un mínimo de 16 unidades de textura accesibles por el Vertex Shader• Reinicio de primitiva• Instancias - dibujo de objetos en múltiples ocasiones a través de la reutilización de los vertex data• CopyBuffer API para copia rápida de datos, utilizada en conjunto con OpenCL• Con la liberación de la especificación OpenGL 3.1, también fue publicada una extensión de compatibilidad que permite a los desarrolladores acceder a la funcionalidad de OpenGL 1.X/2.X eliminada en OpenGL 3.1. En particular, se mantiene funcionalidad legacy para una amplia línea de soporte.
  • 17. • OpenGL 3.1• OpenGL 3.1• La versión 3.1 (Longs Peak Reloaded) fue publicada el 24 de marzo de 2009, y presenta una serie de características para hacer la API más conveniente de utilizar, además de las características orientadas al rendimiento:• Lenguaje de Sombreado OpenGL revisión 1.40 (GLSL)• Texture Buffer Objects - un tipo de nueva textura que contiene una matriz unidimensional de texels• Uniform Buffer Objects para compartir o actualñizar datos de forma rápida• Texturas normalizadas firmadas (rango ± 1,0)• Un mínimo de 16 unidades de textura accesibles por el Vertex Shader• Reinicio de primitiva• Instancias - dibujo de objetos en múltiples ocasiones a través de la reutilización de los vertex data• CopyBuffer API para copia rápida de datos, utilizada en conjunto con OpenCL• Con la liberación de la especificación OpenGL 3.1, también fue publicada una extensión de compatibilidad que permite a los desarrolladores acceder a la funcionalidad de OpenGL 1.X/2.X eliminada en OpenGL 3.1. En particular, se mantiene funcionalidad legacy para una amplia línea de soporte.
  • 18. • OpenGL 3.2• La versión 3.2 fue publicada el 3 de agosto de 2009. Incluye las siguientes características:• Lenguaje de Sombreado OpenGL revisión 1.50 (GLSL)• Soporte de Geometría Shader• BGRA vértice componente de pedidos• Fragmento Shader coordinar el control de convención• Perfecta mapa cubo filtrado• Fragmento de profundidad de sujeción• Multisampled texturas y textura de las muestras para lugares específicos de la muestra• Objetos de sincronización y cerca
  • 19. • OpenGL 3.3• OpenGL 3.3, simultáneamente lanzado con OpenGL 4.0 y complementada por un conjunto de nuevas extensiones ARB, porta tanta funcionalidad como es posible desde la especificación OpenGL 4.0 para su uso en la generación anterior de hardware GPU. Incluye GLSL 3.30.
  • 20. • OpenGL 4.0• Tarjetas compatibles: Radeon HD serie 5000, nVidia GTX serie 400;• Características:19• OpenGL Shading Language versión 4.00 (GLSL)• Dos fases de sombreado que permiten a la GPU descargar el teselado geométrico de la CPU.• Per-shaders fragmento de la muestra y de sombreado programable posiciones fragmento de entrada para mayor calidad de representación y anti-aliasing de flexibilidad.• Subrutinas Shader para una flexibilidad de programación aumentada significativamente.• Separación del estado de textura y de los datos de textura mediante la adición de un nuevo tipo de objeto llamado sampler objetos.• Dibujo de los datos generados por el API de OpenGL o APIs externos, tales como OpenCL, sin intervención de la CPU.• Operaciones de 64-bit de coma flotante de doble precisión de sombreado y entradas / salidas para prestar mayor precisión y calidad.• Mejoras de rendimiento, tales como shaders de geometría en instancias, instancias matrices y una consulta de nuevo temporizador.
  • 21. • OpenGL 4.1• Tarjetas soportadas: Nvidia GeForce 400 series, Nvidia GeForce 500 series, ATI Radeon HD 5000 series, AMD Radeon HD 6000 Series• Esta nueva versión añade estas características adicionales a la especificación, muchas de las cuales ayudan a ponerla en consonancia con las de Direct3D 11:• Lenguaje de sombreado OpenGL (GLSL) 4.1• Compatibilidad completa con OpenGL para sistemas integrados (OpenGL ES) 2.0• Reducción de tiempos de recompilación• La capacidad de vincular los programas de forma individual a las cinco etapas programables (Vertex, Control de mosaico, Evaluación de el Teselado, la Geometría, y Fragmento)• Mejoras a la coma flotante general de 64 bits compatible con agregado en OpenGL 4.0eral de 64 bits compatible con agregado en OpenGL 4.0
  • 22. • OpenGL 4.2• Tarjetas soportadas: Nvidia GeForce 400 series, Nvidia GeForce 500 series, ATI Radeon HD 5000 series, AMD Radeon HD 6000 Series, ATI Radeon HD 7000 series• Soporte para shaders con contadores atómicos y load/store/atomic read-modify-write operations en un único nivel de una textura.• Capacidad de capturar geometría de la GPU en mosaico y dibujar varias instancias de una "transform feedback " para que los objetos complejos sean fácilmente replicados o cambiados de posición.• OpenGL puede modificar ahora un subconjunto arbitrario de una textura comprimida sin necesidad de volver a descargar toda la textura a la GPU llevando esto a un mayor rendimiento.• Soporte para empaquetar varios valores de 8 bits y 16 bits en un único valor de 32 bits, llevando a un procesamiento más eficiente del shader y presión reducida en la memoria y el ancho de banda.
  • 23. OpenGL 4.3• 201222 Tarjetas Soportadas: Nvidia GeForce 400 series, Nvidia GeForce 500 series, Nvidia GeForce 600 series• Incluye la versión más actualizada de GLSL en su versión 4.30 (OpenGL Shading Language).• Cálculo de shaders que aprovechan el paralelismo de la GPU para todo lo relacionado con geometría o gráficos.• Almacenamiento en búfer de objetos Shader.• Consultas de parámetros de texturas para hallar los límites que las plataformas pueden tener para procesar las mismas.• Alta calidad de comprensión en texturas ETC2/EAC como característica estándar.• Compatibilidad total con las APIs de OpenGL ES 3.0.• Capacidades de depuración que permiten recibir mensajes de depuración mientras se desarrolla la aplicación.• Vistas de texturas para análisis de las mismas en diferentes formas sin replicación de datos.• Incrementa la seguridad de la memoria.• Una extensión multi-aplicación que añade robustez al sistema, e impide que las aplicaciones que provoquen un fallo y tengan que resetearse afecten a otras que estén en ejecución.
  • 24. OpenGl Comparada con directx de microsoft• Si nos guiamos por la portabilidad, DirectX difícilmente supera a OpenGL, dada su gran dependencia con Windows y sus componentes. Fuera de este sistema operativo, solamente se encuentra implementada en la consola Xbox. En cambio, OpenGL es compatible no sólo con WindSows, sino que se utiliza en sistemas Unix, Linux, Macy hasta en consolas como PlayStation 3 y Nintendo Wii. En resumen: Exceptuando Windows y Xbox, todos los sistemas que proveen soporte para aceleración 3D han escogido a OpenGL. Por algo será, ¿No?. . Además, OpenGL fue diseñada para asegurar retrocompatibilidad. Es decir, la primera versión de OpenGL puede ser compilada y ejecutada por la última versión sin ningún problema.
  • 25. • La diferencia principal es que DirectX es una API cuya plataforma se basa en lo que el hardware es capaz de realizar, mientras que OpenGL es un tanto más independiente. A su vez, de su implimentacion depende la administración de los recursos, algo que en DirectX corre por cuenta de la aplicación. Esto hace que sea más proponeso a sufrir los temidos errores de propagación (mejor conocidos como bugs).
  • 26. lenguajes• Fortran 90 OpenGL Bindings• f90gl es una implementación de dominio público de los oficiales de Fortran 90 enlaces para OpenGL. Con los nuevos enlaces, un programador puede escribir Fortran que sigan los estándares de las aplicaciones gráficas que serán portátil en la mayoría de plataformas informáticas. La versión actual es la Versión 1.2.3 Esta versión implementa la interfaz para OpenGL 1.2, 1.2 GLU, GLUT 3,7, y varias extensiones. Es compatible con varias estaciones de trabajo Unix y Windows 95/98/NT. También es la interfaz de Fortran para Mesa.
  • 27. • Java enlaces para OpenGL• Los JOGL Java / OpenGL enlaces – El proyecto JOGL acoge la versión de desarrollo de Java ™ de la unión de la API OpenGL (JSR-231), y está diseñado para proporcionar el hardware de gráficos compatibles 3D para aplicaciones escritas en Java. JOGL proporciona acceso completo a la API de OpenGL en el 1,3 a 3,0, 3,1 - 3,3, ≥ 4,0, ES 1.x y especificación ES 2.x, así como casi todas las extensiones de proveedor. Se integra con el AWT y columpios widget, así como con kits de herramientas de ventanas personalizadas con la API de NativeWindow. Forma parte de un conjunto de tecnologías de código abierto iniciado por el Grupo de Tecnología de Juegos de Sun Microsystems. Por favor vea las demos JOGL para las ilustraciones de las técnicas avanzadas de OpenGL ahora es posible con la plataforma Java.
  • 28. • Lightweight Java Game LibraryDirigido a programadores Java profesionales yaficionados por igual con soporte para OpenGL,OpenAL, gamepads, volante y Joysticks• Java 3D (retenido SUN biblioteca modo de capas en OpenGL)• Java 3D para Mac OS X• OpenGL para Java (GL4Java)• YAJOGLB (otro Java OpenGL Binding)• JGL: una biblioteca de gráficos 3D para Java
  • 29. • Perl OpenGL Bindings• Perl OpenGL (POGL) Módulo es un binario Perl vinculante de OpenGL que soporta el procesamiento GPGPU.• Perl enlaces OpenGL 0,64 - Módulo de Perl para mostrar datos en 3D usando OpenGL, GLU, GLUT y GLU GLXf es compatible y GLUT debe contar con el apoyo de hasta API versión 3• OpenGL Perl, C y Puntos de Referencia de Python• Pike OpenGL Bindings• Pike tiene una interfaz nativa de OpenGL. Además de Pikes Pike apoyo GL también soporta GLU y GLUT.
  • 30. • Python Bindings OpenGL• PyOpenGL es una fuente multi-plataforma abierta Python vinculante a la norma API OpenGL proporciona 2-D y 3-D de dibujo gráfico. PyOpenGL apoya el GL, GLU, GLUT y bibliotecas. La biblioteca se puede utilizar con el Tkinter, wxPython, FxPy, y bibliotecas Win32GUI de ventanas (o casi cualquier biblioteca de ventanas que puede proporcionar un contexto OpenGL).• PyGlut hace GLUT disponible en el intérprete de Python.
  • 31. • Delphi Bindings• OpenGL Delphi Bindings ( alemán )• Ada OpenGL Bindings• Ada bindings OpenGL soporta GL & GLU y GLUT.• OpenGL y Visual Basic• Programación OpenGL con Visual Basic• Un control ActiveX de la aplicación de OpenGL 1.1. para su uso con Visual Basic• OpenGL y Visual Basic• Visual Basic fragmentos de código y archivos
  • 32. Proyectos construidos en OpenGl• GruaGlse trata de un proyecto realizado para la asignatura DiseñoAsistido Por Computador (DAC) de la Universidad de Granada.El lenguaje de programación usado es C y la api OpenGl.• Proyecto Dado en openGL con Mono• Robot en opengl• Sistema Solar en Opengl
  • 33. • Como lo habiamos mencionado anteriormente en opengl es posible realizar todo tipo de graficos en 3d como por ejemplo un juego, y es justamente un juego muy sencillo pero antiguo pacman. Para este juego se emplearon cubos, esferas, triangulos y otros. Para empezar se preparó la plataforma del juego, acomodando cubos de distintas dimenciones para los caminos, luego se le dió forma a los "mounstritos" y se configuró su desplazamiento lo cual fué algo complicado de programar. También se acomodaron las esferas que se deben "comer".

×