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.
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
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
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)
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
.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