Your SlideShare is downloading. ×
Direct Xy 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

Direct Xy Open Gl

2,779
views

Published on

Trabajo teórico acerca de las APIs en la programación de los videojuegos.

Trabajo teórico acerca de las APIs en la programación de los videojuegos.

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,779
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
55
Comments
0
Likes
1
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. DirectX y OpenGL
    • Autor: Félix Mera García
    • 2. E-Mail: [email_address]
    • 3. Asignatura: PROV 08-09
    Introducción a las APIs en la programación de videojuegos
  • 4. DirectX y OpenGL
    • Introducción al concepto de API.
    • 5. Las APIs de Microsoft: DirectX:
        • Direct3D y su pipeline gráfica.
        • 6. DirectImput.
        • 7. DirectX Audio.
        • 8. DirectPlay y otras APIs de DirectX.
    Índice
      • La API de OpenGL:
                  • Características de OpenGL.
                  • 9. La pipeline gráfica de OpenGL.
                  • 10. Librerías de Utilidades OpenGL.
                  • 11. Ejemplo de polígono en OpenGL
  • 12. DirectX y OpenGL
    • Application Programming Interface (Interfaz de Programación de Aplicaciones o API ) es un conjunto de funciones, procedimientos o métodos que forman parte de una biblioteca para permitir un nivel de abstracción al programador.
    • 13. Las funciones que puede incluír una API son variadas: Dibujar ventanas y elementos gráficos tales como puntos y rectas, leer entradas de periféricos como el joystick o el ratón, etc...
    • 14. Minimizan el trabajo de implementación del software, ya que contienen una cantidad enorme de funciones útiles para propósitos muy diversos.
    • 15. En la programación de videojuegos destacan dos conjuntos de APIs: DirectX y OpenGL. Ambos conjuntos de APIs ofrecen funciones para dibujar gráficos sobre la pantalla y, en el caso de DirectX, otras para el control de E/S, reproducción de sonidos, comunicación en red y demás.
    Introducción al Concepto de API
  • 16. DirectX y OpenGL
    • DirectX es una colección de APIs para la plataforma Windows que facilita la implementación de software multimedia, especialmente con los videojuegos.
    • 17. Compuesto por diversas APIs: Direct3D, DirectImput, DirectSound...
    • 18. Desarrollado por Microsoft y con licencia EULA .
    • 19. DirectX en videoconsolas: DirectX 6.0 en la Dreamcast con Windows CE y XAudio en XBOX.
    • 20. En la actualidad la versión utilizada es DirectX 10.1, exclusiva de Windows Vista pero que ofrece compatibilidad hacia atrás con las otras versiones. Ya está en desarrollo la versión 11.
    • 21. En UNIX existe CEDEGA , una implementación de la API de DirectX por la empresa Transgaming para poder ejecutar juegos exclusivos de Windows en SOs como GNU/Linux.
    Las APIs de Microsoft: DirectX
  • 22. DirectX y OpenGL
    • API disponible para sistemas Windows (32 y 64 bits) y para algunas consolas como XBOX y XBOX 360.
    • 23. Se utiliza para la programación de gráficos 3D: Se manejan elementos gráficos simples como líneas, polígonos y texturas y transformaciones geométricas sobre los mismos.
    • 24. Proporciona una interfaz al programador del hardware de aceleración 3D.
    • 25. Dos modos de programación con esta API:
      • Modo inmediato: Soporta las primitivas de procesamiento 3D que permiten las tarjetas gráficas, tales como luces, control de profundidad, transformaciones...
      • 26. Modo retenido: Es el más usado por programadores. Construído sobre el anterior, presenta una mayor abstracción para manipular gráficos y animaciones.
    Direct3D
  • 27. DirectX y OpenGL
    • Capas de abstracción de Direct3D comparadas con GDI:
    Direct3D
    • Aplicación Win32: Por ejemplo, un juego.
    • 28. Graphic Device Interface: API de la IU de Windows encargada de gestionar los gráficos sobre dispositivos de salida.
    • 29. Hardware Abstract Layer: Dispositivo que permite la aceleración 3D.
  • 30. DirectX y OpenGL
    • Ensamblaje de entrada: introduce los datos de entrada (primitivas como líneas, puntos y triángulos)
    • 31. Shader de vértices: Tratando los vértices de forma individual, opera con ello transformándolos, iluminándolos...
    • 32. Shader de geometría: Realiza operaciones con primitivas.
    • 33. Flujo de salida: Almacena los datos anteriores ya calculados en memoria.
    • 34. Rasterización: convierte la imagen 3D en píxeles.
    • 35. Shader de píxeles: Realiza operaciones con los píxeles.
    • 36. Fusión de salida: Combina la salida del shader de píxeles con patrones de profundidad para construír el resultado final.
    La pipeline gráfica de Direct3D
  • 37. DirectX y OpenGL
    • API de DirectX que permite leer datos de diferentes dispositivos de entrada (mouse, joystick, teclado, gamepad...) para procesarlos y que el usuario controle el videojuego.
    • 38. DirectImput posee un sistema de mapeo que permite especificar las acciones que originarán los botones y los ejes de los dispositivos de entrada.
    • 39. Actualmente DirectInput está obsoleto: Xinput es la nueva API de dispositivos de entrada a partir de la versión DirectX 9.0.
        • XInput es la nueva API de dispositivos de entrada a partir de la versión 9.0 de DirectX
        • 40. XInput ofrece una facilidad de uso mayor a DirectImput.
        • 41. Esta API es utilizada en la XBOX 360.
    DirectInput
  • 42. DirectX y OpenGL
    • API que proporciona una interfaz entre una aplicación software y los drivers de la tarjeta de sonido, permitiendo reproducir, mezclar y grabar sonidos, así como añadirles efectos en tiempo real (reberveración, eco, flanger...).
    • 43. DirectX Audio está compuesto por DirectSound y DirectSound3D (para el procesamiento de los sonidos envolventes).
    • 44. Actualmente se está migrando a la API XAudio 2, utilizada en la plataforma de juegos XBOX 360 por las mejoras que supone respecto a la anterior en procesamiento con efectos digitales y en procesamiento multicanal para sonido envolvente entre otros.
    DirectX Audio
  • 45. DirectX y OpenGL
    • DirectPlay es la API de DirectX que proporciona funciones para la comunicación de juegos en red, entre los clientes y el servidor a través de puertos UDP.
    • 46. También sirve para la transferencia de archivos P2P.
    • 47. Otras APIs de DirectX:
        • DirectGraphics: primitivas para dibujar gráficos en 2D.
        • 48. DirectMusic: para reproducir pistas de audio.
        • 49. DirectShow: reproducir vídeo / audio en red.
        • 50. DirectSetup: facilita la instalación de componentes DirectX
    DirectPlay
  • 51. DirectX y OpenGL
    • API multilenguaje utilizada para producir gráficos complejos 2D y 3D a partir de elementos geométricos simples como puntos, rectas y triángulos. Es usada en CAD, RV, simulaciones y en videojuegos.
    • 52. OpenGL es la competidora directa de la API Direct3D de Microsoft cuando se trata de videojuegos.
    • 53. Desarrollada por Silicon Graphics , posee licencias de diverso tipo . Ahora es desarrollada por el grupo Khronos (nVidia, Intel, AMD, Apple y Blizzard).
    • 54. Multiplataforma: Mac OS, Windows, UNIX, GNU/Linux, PlayStation3...
    • 55. La versión actual es la 3.0: El hardware gráfico que ejecuta DirectX 10 soporta de forma nativa OpenGL en su última versión.
    La API de OpenGL
  • 56. DirectX y OpenGL
    • Presenta al programador una única API con más de 250 funciones, abstrayéndolo de las distintas tarjetas gráficas.
    • 57. Oculta las particularidades del hardware: OpenGL va siempre a funcionar aunque sea necesario utilizar emulación software.
    • 58. Utiliza una máquina de estados para convertir las primitivas gráficas simples (puntos, líneas y polígonos) a píxeles.
    • 59. OpenGL es una API con funciones a bajo nivel: el programador tiene que codificar todos los pasos para renderizar una escena, para lo que se requiere un conocimiento en profundidad de la pipeline gráfica. De esta forma se consiguen implementar algoritmos gráficos con mayor libertad.
    Características de OpenGL
  • 60. DirectX y OpenGL
    • Evaluación de las funciones polinomiales.
    • 61. Operaciones con vértices: se recortan las partes no visibles en la escena y se iluminan.
    • 62. Rasterización (los polígonos se convierten en píxeles y se colorean mediante algoritmos de interpolación).
    • 63. Operaciones con segmentos para dar profundidad o combinar colores.
    • 64. Los fragmentos se vuelcan en el FrameBuffer.
    La pipeline gráfica de OpenGL
  • 65. DirectX y OpenGL
    • Para complentar la API, se desarrollaron unas librerías que añaden funcionalidades adicionales: sobre todo con la idea de competir con DirectX:
        • GLU (openGL Utility): Funciones de dibujo a alto nivel que se basan el las de OpenGL. Para dibujar mipmaps, esferas, cilindros, toroides... Se distribuye normalmente junto OpenGL.
        • 66. GLUT (openGL Utility Toolkit): equiparable con DirectImput, facilita funciones para el tratamiento de E/S con ratón, teclado y demás dispositivos. Tiene soporte adicional para el dibujado de figuras geométricas y creación de menús.
        • 67. GLUI (openGL User Interface): Basada en GLUT y escrita en C++. Proporciona elementos de de IU como botones y cajas de selección. Es independiente del SO.
    Librerías de utilidades OpenGL
  • 68. DirectX y OpenGL
    • Pasos para crear un cuadrado incrustado en el plano Z (utilizando sólo funciones de OpenGL):
    Ejemplo de polígono en OpenGL glClear( GL_COLOR_BUFFER_BIT ); /* Limpiamos el buffer de píxeles y colores: escena de color negro */ glMatrixMode( GL_MODELVIEW ); /* Los comandos para matriz modificarán ''modelview'', la matriz encargada de situar la cámara en escena */ glLoadIdentity(); /* Inicializar ''modelview'' */ glTranslatef( 0, 0, -3 ); /* Desplazar 3 unidades en el eje Z */ glMatrixMode( GL_PROJECTION ); /* Los comandos para matriz modificarán ''projection'', la matriz que varía la perspectiva */ glLoadIdentity(); /* Inicializar ''projection'' */ glFrustum( -1, 1, -1, 1, 1, 1000 ); /* Aplicar una proyección en perspectiva */ glBegin( GL_POLYGON ); /* Dibujamos el polígono cuadrado */ glColor3f( 0, 1, 0 ); /* Establecer color RGB del polígono a verde */ glVertex3f( -1, -1, 0 ); /* Establecemos los vértices */ glVertex3f( -1, 1, 0 ); glVertex3f( 1, 1, 0 ); glVertex3f( 1, -1, 0 ); glEnd(); /* Fin de dibujado del polígono */
  • 69. DirectX y OpenGL
    • OpenGL: http://www.opengl.org/
    • 70. Microsoft DirectX: http://msdn.microsoft.com/en-us/directx/default.aspx
    • 71. Ultimate game programing: http://www.ultimategameprogramming.com/
    • 72. Stratos: http://www.stratos-ad.com/
    • 73. Neon Helium: http://nehe.gamedev.net/
    • 74. Wikipedia: http://es.wikipedia.org/
    • 75. GameDev: http://www.gamedev.net/
    • 76. A fondo: DirectX: ISBN 8448121112
    • 77. Beginning OpenGL Game Programming: ISBN 1592003693
    • 78. More OpenGL Game Programming: ISBN 1592008308
    Fuentes y bibliografía