lunes, 17 de junio de 2013

2 .-. Detección del Hardware. Ciclo.

Bien esta es la última parte del tema 2. El ciclo principal de la aplicación. Básicamente una aplicación DX es un ciclo que se repite y que hace lo siguiente:

- Comprueba los controles (teclado, ratón, mandos) para ver qué se pulsa.
- Ejecuta las acciones de los controles.
- Ejecuta la IA.
- Ejecuta la física del juego.
- Modifica la cámara, la proyeccion, el mundo.
- Lo pinta todo. Render.
- Vuelve a Empezar.



Vamos a ir construyendo el bucle poco a poco. Lo primero es ir al FORM1 y crear esto en su evento PAINT.

    Private Sub Form1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        Try
            Me.Bucle()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

Esto llama constantemente al Sub Blucle, ¿y quién es bucle? Pues también podéis crearlo en FORM1.

    Private Sub Bucle()
        Try
            Do While Start = True
                'Controles_del_ratón()
                'Controles_del_teclado()

                'Engine.Control_Camara(Dispo3D, CamaraPos, CamaraAngulo)
                Engine.Render(Dispo3D)
                Application.DoEvents()
            Loop
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

Como veis es un bucle que funciona mientras Start vale True, es decir, si la aplicación 3D ha sido correctamente inicializada entonces esto funciona sino... pues no.
Por ahora los controles y la cámara, como no sabemos nada de ellos dejadlos así comentados. Vamos con la llamada a RENDER del Motor.

En la clase Motor crearemos el renderizador al que pasaremos el objeto Device como siempre ByRef.

    Public Sub Render(ByRef DP3 As Direct3D.Device)
        Try

            DP3.Clear(ClearFlags.Target Or ClearFlags.ZBuffer, Color.FromArgb(0, 0, 0), 1, 0)
            DP3.BeginScene()

            'PINTAR COSAS:'

            DP3.EndScene()
            DP3.Present()
        Catch ex As Exception

        End Try
    End Sub

Bien aquí lo que tenemos es:

- Clear: Básicamente pinta todo el fondo de un color, el negro en este caso. Vamos borra todo lo que hay.
- BeginScene y EndScene son la forma de indicarle al Device que vamos a decirle cosas para pintar.
- Present: Le decimos que pinte.

En medio del BeginScene y el EndScene tenemos tooooodo lo que queremos pintar, vamos el juego en sí. Ni que decir tiene que, el rendimiento del "Render" determina el rendimiento del juego.

Con esto finalizamos el tema 2. Hemos visto como detectar el hardware, configurarlo aprovechando los valores de la pantalla y también como configurar el dispositivo 3D. Por último vemos como funcionan los dos bucles: el de la aplicación y el de Render.

No hay comentarios:

Publicar un comentario