martes, 11 de junio de 2013

2 .-. Empezando DX. Detección del Hardware.

Bien vamos allá. Lo que vamos a hacer, en primer lugar, es añadir una nueva clase a nuestro proyecto a la que llamaremos "Motor". En ella escribiremos métodos que emplearemos en nuestro FORM1 a través de un objeto instanciado de esa clase motor a la que llamaremos Engine.
Tanto en la clase Motor como en la FORM1 aseguraos de que teneis los espacios de nombres:


 

 Imports Microsoft.DirectX
 Imports Microsoft.Direct3D
 Imports Microsoft.DirectInput

En la clase Motor vamos a declarar algunas cosas:

Public Class Motor

    Private PantallaCompleta As Boolean

    Private Modo_Pantalla As DisplayMode
    Private Conf_Pantalla As New PresentParameters

    Private Const FOV As Single = Math.PI / 4
    Private Ratio As Single
    Private Const Z_Cerca As Single = 1
    Private Const Z_Lejos As Single = 1000

¿Y eso para qué es?
Bien, el boleano PantallaCompleta dice si la aplicación está en pantalla completa o no. Modo_Pantalla y Conf_Pantalla nos permitirán contener los valores de resolución y profundidad de color y, por otro lado, la configuración del adaptador gráfico, respectivamente. Para entendernos uno se ocupa del monitor y el otro de vuestra tarjeta gráfica.
Los valores FOV, Ratio, y las Z_ las emplearemos cuando veamos el tema de proyecciones, pero ya las ponemos por ahora aquí.
* Nota: Recordad que "Motor" es una clase que será instanciada en Form1 mediante el objeto Engine.

Después, en la clase Form1, vamos a crear una serie de variables y objetos:

Public Class Form1

    Private Engine As New Motor()

    Private FS As Boolean
    Private Start As Boolean

    Private Dispo3D As Direct3D.Device

Pues más o menos lo mismo, FS es un boleano de FULLSCREEN, me permite saber si tengo la pantalla completa o no. Start, otro boleano que dice si la aplicación está lista para funcionar o no y Dispo3D es un objeto de tipo Device que es el centro de todo y que hará todo en nuestra aplicación como iremos viendo.
Engine es el objeto que instancia la clase motor.

Una imagen para orientar un poco.


¿Todo OK? Bien.

A continuación, en el evento LOAD del Form1, vamos a establecer algunas propiedades del FORM1, que realmente muchas no valen para nada, pero las ponemos de todas formas,

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Try
            Start = False
            FS = True
            With Me
                .Show()
                .Width = 325
                .Height = 160
                .SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.Opaque, True) 
                If FS = True Then
                    .FormBorderStyle = Windows.Forms.FormBorderStyle.None
                End If

            End With

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub


Veamos, ponemos que Start = False porque todavía no tenemos la aplicación lista para ejecutar, FS = True pues quiero que se ejecute a pantalla completa (FULLSCREEN), el resto de cosas nada excepto el SetStyle que sirve para que no parpadee la pantalla cuando ejecutemos la aplicación. En el If, si la pantalla es completa retiramos el borde del form y la caja de control de la "cruz" de cerrar.

Bien hasta aquí esta parte, mañana iremos con la rutina de inicialización de DX.

No hay comentarios:

Publicar un comentario