Hola a todos:
En Visual Basic.NET(y para DirectX9) intento crear un sprite al que le aplico una imagen jpg como textura. Este debe funcionar como fondo de la ventana.
En C++, no es muy complejo, pero en Visual Basic no doy con el error. He de decir que "Imagen.jpg" existe y está bien ubicada. El error esta en el código. No encuentro información para VBN y DirectX9 que me ayude a solucionarlo. Espero vuestra ayuda. Gracias
Imports System
Imports System.Drawing
Imports System.Windows.Forms
Imports Microsoft.DirectX
Imports Microsoft.DirectX.Direct3D
Imports Direct3D = Microsoft.DirectX.Direct3D
Namespace CrearUnFondo
Public Class SpriteComoFondo
Inherits System.Windows.Forms.Form
Private dispositivo As Microsoft.DirectX.Direct3D.Device = Nothing
Private sprite As Microsoft.DirectX.Direct3D.Sprite = Nothing
Private textura As Microsoft.DirectX.Direct3D.Texture = Nothing
Private parametros As New PresentParameters
Private rectangulo As System.Drawing.Rectangle
Private escala As Vector2
Private rotacion as Vector2
Private traslacion As Vector2
Public Sub New()
Me.ClientSize = New System.Drawing.Size(1024, 768)
Me.Text = "Una de Marcianos"
End Sub
Public Function Inicializar() As Boolean
Try
parametros.Windowed = True
parametros.SwapEffect = SwapEffect.Discard
'parametros
dispositivo = New Device(0, DeviceType.Hardware, Me, CreateFlags.SoftwareVertexProcessing, parametros)
sprite = New Sprite(dispositivo)
Dim nombre As String
nombre = "IMAGEN.JPG"
textura = Microsoft.DirectX.Direct3D.TextureLoader.FromFile(dispositivo, nombre, D3DX.Default, D3DX.Default, D3DX.Default, 0, Format.Unknown, Pool.Managed, Filter.Triangle Or Filter.Mirror, Filter.Triangle Or Filter.Mirror, 0)
dispositivo.SetTexture(1, textura)
Return True
Catch ex As DirectXException
Return False
End Try
End Function
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
Me.render()
End Sub
Protected Overrides Sub OnKeyPress(ByVal e As KeyPressEventArgs)
If Asc(e.KeyChar) = CInt(System.Windows.Forms.Keys.Escape) Then
Me.Dispose()
End If
End Sub
Public Sub render()
dispositivo.Clear(ClearFlags.Target, System.Drawing.Color.Black, 1.0F, 0)
dispositivo.BeginScene()
sprite.Begin()
rectangulo.X = 0
rectangulo.Y = 0
escala.X = 1
escala.Y = 1
traslacion.X = 0
traslacion.Y = 0
sprite.Draw(textura, rectangulo, escala, rotacion, 0, traslacion, System.Drawing.Color.White)
sprite.End()
dispositivo.EndScene()
dispositivo.Present()
End Sub
Shared Sub Main()
Dim pantalla As New SpriteComoFondo
If Not pantalla.Inicializar() Then
MsgBox("No pude conectar el dispositivo 3D. La aplicación se cerrara")
Return
End If
pantalla.Show()
While pantalla.Created()
pantalla.render()
Application.DoEvents()
End While
End Sub
End Class
End Namespace