Monografias.com > Computación > Programación
Descargar Imprimir Comentar Ver trabajos relacionados

Módulo DirectX




Enviado por Pablo Turmero



    Monografias.com
    Módulo DirectX – Introducción ¿Qué es
    DirectX? Conjunto de API´s que permite a los
    desarrolladores de contenido interactivo acceder a
    características de hardware especializado sin tener que
    escribir código específico de hardware

    Monografias.com
    Módulo DirectX – Introducción Componentes incluidos
    en DirectX Nos permiten desarrollar aplicaciones de alto
    rendimiento y en tiempo real API DirectPlay API DirectInput API
    DirectSound API DirectDraw API Direct3D

    Monografias.com
    Módulo DirectX – Introducción Objetivos de DirectX
    Desarrollo de Aplicaciones Windows de alto rendimiento Tarjetas
    aceleradoras Plug´n Play Servicios de comunicaciones
    construidos bajo Windows Recursos instalados en el sistema
    Utilización del nuevo hardware implementado

    Monografias.com
    Módulo DirectX – Introducción DirectX & COM
    (Component Object Model) Objeto: caja negra que representa el
    hardware y requiere comunicación con las aplicaciones a
    través de una interface. Método: comandos enviados
    y recibidos por el objeto a través de la interface COM
    Ej.: Método GetDisplayMode es enviado a través de
    la interface IDirectDraw2 para tomar el valor de la actual
    resolución de la pantalla mediante el objeto
    DirectDraw

    Monografias.com
    Módulo DirectX – DirectDraw Se encarga del manejo de la
    memoria de vídeo Proporciona herramientas para
    Manipulación de múltiples buffers de vídeo
    Acceso directo a la memoria de vídeo Page flipping Back
    Buffering Manejo de la paleta gráfica Clipping

    Monografias.com
    Módulo DirectX – DirectDraw Tipos de objetos IDirectDraw
    IDirectDrawSurface IDirectDrawPalette IDirectDrawClipper
    IDirectDrawVideoPort

    Monografias.com
    Módulo DirectX – DirectDraw Conceptos Gráficos y
    Técnicos Bitmaps Superficies de dibujo (buffers) Blitting
    Page Flipping y Back Buffering Rectángulos Sprites Niveles
    cooperativos Modos de vídeo Buffers Overlays Clippers
    Video Ports

    Monografias.com
    Ejemplo 1 Ejemplo 2 Ejemplo 3 Ejemplo 4 Ejemplo 5

    Monografias.com
    Módulo DirectX – DirectSound Componente de Audio de
    DirectX: Mezclado de canales de audio Aceleración hardware
    Acceso directo al dispositivo de sonido Captura de Audio
    (versión 6)

    Monografias.com
    Módulo DirectX – DirectSound Interfaces COM
    IDirectSoundBuffer IDirectSound3DBuffer IDirectSound3DListener
    IDirectSoundCapture IDirectSoundCaptureBuffer

    Monografias.com
    Módulo DirectX – DirectPlay Simplifica el acceso de las
    aplicaciones a los servicios de comunicación Otorga
    independencia para la creación de servidores de juegos
    Comunicaciones Peer-to-Peer Cliente/Servidor Sesiones
    Lobby´s

    Monografias.com
    Módulo DirectX – Direct3D Interfaz gráfica para
    hardware 3D Permitir gráficos tridimensionales
    interactivos en aplicaciones de Windows 2 Modos: Inmediato API 3D
    de bajo nivel Independiente del dispositivo Programadores
    experimentados Retenido Desarrollo rápidos Capa superior
    del inmediato

    Monografias.com
    Módulo DirectX – Direct3D Conceptos Básicos
    Sistemas de coordenadas 3-D Left-handed (mano izquierda) Podemos
    simular el right-handed Transformaciones 3-D Traslación
    Rotación Escalado Polígonos Normales de cara y
    vértice Modos de sombreado Interpolaciones de
    triángulos

    Monografias.com
    Módulo DirectX – Direct3D Conceptos Básicos
    Triángulos Reglas de rasterización de
    triángulos

    Monografias.com
    Módulo DirectX – Direct3D (Modo Inmediato) Tipos de
    Objetos IDirectDraw IDirectDrawSurface IDirect3Ddevice
    IDirect3Dmaterial IDirect3Dviewport IDirect3Dlight
    IDirect3DexecuteBuffer

    Monografias.com
    Módulo DirectX – Direct3D (Modo Retenido)
    IDirect3DRMAnimation Define como será modificada una
    transformación acorde al valor tiempo La animación
    es ajustada mediante el método SetTime

    Monografias.com
    Módulo DirectX – Direct3D (Modo Retenido)
    IDirect3DRMAnimationSet Permite a IDirect3DRMAnimation que haya
    agrupación Compartirán el mismo parámetro
    tiempo Dim anim As IDirect3DRMAnimationSet
    D3DRM.CreateAnimationSet anim anim.Load App.Path &
    “anim.x”, 0, 0, 0, 0, animframe anim.SetTime 1

    Monografias.com
    Módulo DirectX – Direct3D (Modo Retenido)
    IDirect3DRMDevice Representa la visualización final del
    Render creado Soporta Devices que renderizan directamente a la
    pantalla, ventana o memoria de vídeo Dim Device As
    IDirect3DRMDevice D3DRM.CreateDeviceFromSurface …..

    Monografias.com
    Módulo DirectX – Direct3D (Modo Retenido) IDirect3DRMFace
    Representa un único objeto en un mesh

    Monografias.com
    Módulo DirectX – Direct3D (Modo Retenido) IDirect3DRMFrame
    Posiciona objetos en una escena y define las posiciones y
    orientaciones de los objetos visuales Escena: frame que no tiene
    “padre”, define el frame de referencia para todos los
    demás objetos Jerarquías y Motion (rotación
    y velocidad intrínseca)

    Monografias.com
    Módulo DirectX – Direct3D (Modo Retenido)
    IDirect3DRMInterpolator Guarda acciones y las aplica a otros
    objetos mediante cálculos automáticos Ej.:
    Background en el espacio tiempo 0 el color rojo y en el 10 el
    color verde. Coloreará de forma automática las
    escenas sucesivas para fundir desde el rojo al verde

    Monografias.com
    Módulo DirectX – Direct3D (Modo Retenido) IDirect3DRMLight
    Define uno de los 5 tipos de luces que son utilizadas para
    iluminar los objetos visuales de la escena Ambiente, Point,
    Spotlight, Directional y Parallel point La luz va contenida en un
    frame y consume mucho proceso de CPU

    Monografias.com
    Módulo DirectX – Direct3D (Modo Retenido)
    IDirect3DRMMaterial Define cómo una superficie refleja la
    luz IDirect3DRMMesh Podemos utilizarlo para manipular grupos de
    caras y vértices IDirect3DRMMeshBuilder Nos permite
    trabajar con vértices y caras individuales de un mesh.
    Realmente formará un objeto 3D en la escena

    Monografias.com
    Módulo DirectX – Direct3D (Modo Retenido)
    IDirect3DRMPickedArray Identifica un objeto visual que
    corresponde a un punto 2D determinado IDirect3DRMPicked2Array
    Suele ser utilizado para colisiones entre objetos
    IDirect3DRMShadow Define una sombra emitida por otro

    Monografias.com
    Módulo DirectX – Direct3D (Modo Retenido)
    IDirect3DRMObject Clase base utilizada por todos los demás
    objetos del modo retenido IDirect3DRMProgressiveMesh Permite la
    carga de objetos 3D mediante pequeñas porciones
    IDirect3DRMTexture Consta de un array rectangular de
    píxeles coloreados

    Monografias.com
    Módulo DirectX – Direct3D (Modo Retenido)
    IDirect3DRMViewport Define cómo la escena 3D es
    renderizada en un plano 2D (como una ventana de Windows)
    Cámara: renderiza lo que es visible a lo largo del eje Z
    positivo, con la dirección ascendente representada en el
    eje Y positivo Viewing Frustum: cámara en el pico de la
    pirámide. Serán visibles los objetos entre el front
    y el back clipping

    Monografias.com
    Módulo DirectX – Direct3D (Modo Retenido)
    IDirect3DRMVisual Representa cualquier cosa que pueda ser
    renderizada en una escena

    Monografias.com
    Módulo DirectX – Direct3D (Modo Retenido) IDirect3DRMWrap
    Calcula las coordenadas de textura para una cara o mesh. Tipo
    Frame de referencia Origen Vector de dirección Vector de
    altura Factores de escalado Origen para las coordenadas de
    textura

    Monografias.com
    Módulo DirectX – Direct3D (Modo Retenido) IDirect3DRMWrap
    Tipos Wrapping Flags Flat Cylindrical Spherical Chrome

    Monografias.com
    Módulo DirectX Programación Direct3D Ejemplo 1
    Ejemplo 2

    Monografias.com
    Programación Direct3D Decidir entre Clipper o FullScreen
    La programación se basa en frames. Puede contener uno o
    más objetos Cada objeto 3D debe ir enlazado a un frame
    determinado Cinco objetos básicos Device Viewport Scene
    World Camera

    Monografias.com
    Programación Direct3D   Inicio del Programa  
    Option Explicit Objeto Direct3D M. retenido   Dim D3DRM As
    IDirect3DRM3 Dim Scene As IDirect3DRMFrame3 Frame de escena Dim
    Camera As IDirect3DRMFrame3 Frame de cámara Dim clipper As
    IDirectDrawClipper Objeto Clipper Dim Device As
    IDirect3DRMDevice3 Objeto Device Dim Viewport As
    IDirect3DRMViewPort Objeto Viewport Dim LightFrame As
    IDirect3DRMFrame3 Frame de Luz Dim Light As IDirect3DRMLight
    Objeto Luz Dim Globe As IDirect3DRMMeshBuilder3 Mesh (objeto 3D)
    Dim globeframe As IDirect3DRMFrame3 Frame del Mesh Dim salir As
    Boolean Fin de la aplicación

    Monografias.com
    Programación Direct3D Inicializar los objetos Direct3D
    Modo Retenido, Clipper, Viewport y Device. Se crean los frames
    correspondientes a la escena y la cámara, enlazando el
    frame cámara a de la escena para que la
    visualización sea posible Sub init_clipper() Creamos el
    objeto Direct3D Modo Retenido Direct3DRMCreate D3DRM Creamos el
    frame de la escena sin enlazarlo a ningún frame, puesto
    que será el frame padre D3DRM.CreateFrame Nothing, Scene
    Creamos el frame de cámara enlazándolo directamente
    al de la escena y lo posicionamos en 0,0,0 de X, Y y Z. Variando
    estos valores podremos mover la cámara hacia diferentes
    puntos de vista de la escena que hemos creado. D3DRM.CreateFrame
    Scene, Camera Camera.SetPosition Scene, 0, 0, 0 Creamos el
    clipper (ventana) DirectDrawCreateClipper 0&, clipper,
    Nothing clipper.SetHWnd 0, Me.hWnd Creamos el Device y el
    Viewport. El Device debemos enlazarlo al Clipper para que los
    gráficos 3D sean volcados en el mismo. En la
    creación del Viewport es necesario señalar el frame
    del Device y la cámara que utilicemos.
    D3DRM.CreateDeviceFromClipper clipper, ByVal 0&, 320, 200,
    Device D3DRM.CreateViewport Device, Camera, 0, 0, 320, 200,
    Viewport End Sub

    Monografias.com
    Programación Direct3D ApplyTexture es un procedimiento
    encargado de crear el wrapper (envoltura) y la textura que se
    aplicarán a un objeto determinado. Los parámetros
    son: Meshbuilder que asigna el objeto que se verá afectado
    por la textura y StrTextureFileName que pasa el nombre del
    fichero que contiene la textura a aplicar Sub
    ApplyTexture(MeshBuilder As IDirect3DRMMeshBuilder3, ByVal
    strTextureFileName As String) Dim Box As D3DRMBOX Volumen del
    objeto Dim MaxY As Single Valor máximo Dim MinY As Single
    Valor mínimo Dim Height As Single Valor de alto Dim Wrap
    As IDirect3DRMWrap Wrapper Dim texture As IDirect3DRMTexture
    Textura Tomamos el objeto para crear una caja imaginaria que lo
    cubra MeshBuilder.GetBox Box MaxY = Box.Max.Y MinY = Box.Min.Y
    Height = MaxY – MinY

    Monografias.com
    Programación Direct3D Creamos el wrapper con los valores
    obtenidos anteriormente D3DRM.CreateWrap D3DRMWRAP_CYLINDER,
    Nothing, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, MinY / Height, 1, -1 /
    Height, Wrap Aplicamos el wrapper al objeto Wrap.Apply
    MeshBuilder Cargamos la textura con la variable texture
    D3DRM.LoadTexture strTextureFileName, texture
    MeshBuilder.SetTexture texture Set texture = Nothing End Sub
    Mediante Form_Keypress detectamos si se ha pulsado una tecla para
    salir del programa automáticamente Private Sub
    Form_KeyPress(KeyAscii As Integer) salir = True End Sub

    Monografias.com
    Programación Direct3D En este procedimiento de formulario
    iniciamos los valores necesarios pare crear los objetos que
    conformarán la escena 3D. Además, también
    gestionamos el bucle principal que permitirá la
    visualización de la escena en pantalla Private Sub
    Form_Load() Llamamos a init_clipper para crear los frames y el
    clipper init_clipper El método SetBack se aplica al frame
    Viewport. Se encarga de establecer el espacio en el cual es
    posible visualizar los objetos. Si un objeto, o parte de
    él, sobrepasa este valor, no será representado en
    pantalla Viewport.SetBack 5000 Asignamos la calidad de Render al
    dispositivo Device.SetQuality D3DRMLIGHT_ON Or D3DRMFILL_SOLID Or
    D3DRMSHADE_GOURAUD Creamos un Frame en la escena para asignar una
    fuente de luz D3DRM.CreateFrame Scene, LightFrame Creamos un
    objeto de luz tipo direccional D3DRM.CreateLightRGB
    D3DRMLIGHT_DIRECTIONAL, 0.8, 0.8, 0.8, Light Asignamos el objeto
    al frame anterior LightFrame.AddLight Light

    Monografias.com
    Programación Direct3D Dim light2 As IDirect3DRMLight
    Objeto luz ambiente Es necesario crear una luz de tipo ambiente
    para definir la claridad por defecto que ofrecerá el
    Render. Sin luz ambiente no lograremos visualizar bien la escena
    D3DRM.CreateLightRGB D3DRMLIGHT_AMBIENT, 0.4, 0.4, 0.4, light2
    Aplicamos la luz en la escena Scene.AddLight light2 Posicionamos
    la luz direccional en la escena LightFrame.SetPosition Scene, 0,
    0, 0 Posicionamos la cámara para ajustar el punto de vista
    Camera.SetPosition Scene, 0, 0, 0 Camera.SetOrientation Scene, 0,
    0, 1, 0, 1, 0 Creamos el objeto visual (Esfera) y su frame
    correspondiente D3DRM.CreateFrame Scene, globeframe
    D3DRM.CreateMeshBuilder Globe Mediante el método Load
    asignamos el path que contiene el objeto Globe.Load App.Path
    & "globe.x", 0, D3DRMLOAD_FROMFILE, 0, 0 Establecemos la
    calidad que tendrá el objeto de cara al Render
    Globe.SetQuality D3DRMLIGHT_ON Or D3DRMFILL_SOLID Or
    D3DRMSHADE_GOURAUD

    Monografias.com
    Programación Direct3D Dependiendo del punto de vista del
    observador, hay veces en que las texturas de los objetos parecen
    descolocarse u ofrecen una representación visual muy
    distinta a la que deberían tener en un principio. Mediante
    la corrección de perspectiva se soluciona este
    pequeño problema. Para ello, hay que establecer en true el
    método SetPerspective que apliquemos al objeto
    Globe.SetPerspective 1 Asignamos el objeto a su frame y
    establecemos sus posiciones en la escena globeframe.AddVisual
    Globe globeframe.SetPosition Scene, 0, 0, 5
    globeframe.SetOrientation Scene, 0, 0, 1, 0, 1, 0 Ponemos una
    rotación al objeto para animarlo constantemente
    globeframe.SetRotation Scene, 1, 1, 1, 0.17 Le asignamos la
    textura ApplyTexture Globe, App.Path & "fire.bmp" Vaciamos
    los objetos que representan las Fuentes de luz Set LightFrame =
    Nothing Set Light = Nothing

    Monografias.com
    Programación Direct3D   Bucle principal While salir =
    False Dibuja en pantalla el render obtenido redraw_clipper
    DoEvents Wend Descarga el formulario cuando se acabe la
    aplicación vacia_clipper Unload Me End Sub Descarga los
    objetos DirectX creados Sub vacia_clipper() Set Scene = Nothing
    Set Camera = Nothing Set Viewport = Nothing Set Device = Nothing
    Set D3DRM = Nothing Set clipper = Nothing End Sub

    Monografias.com
    Programación Direct3D   Dibuja en pantalla el Render
    obtenido. Recordemos que el Render se alberga primero en el
    backbuffer y luego se vuelca automáticamente a la ventana
    Public Sub redraw_clipper() On Error GoTo mi_Error Aplica las
    rotaciones y velocidades para todos los frames de la
    jerarquía Scene.Move 1 Borra el Viewport con el color
    actual del background Viewport.Clear Renderiza una
    jerarquía de frames al Viewport utilizado. Sólo
    serán renderizados aquellos objetos visuales que
    estén en esa jerarquía de frames Viewport.Render
    Scene Copia la imagen que ha sido renderizada a la pantalla o
    buffer de destino Device.Update Exit Sub mi_Error: Resume End Sub

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter