• Jueves 9 de Mayo de 2024, 20:27

Autor Tema:  Problema Con Los Sprite  (Leído 1638 veces)

jeiser

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Problema Con Los Sprite
« en: Viernes 18 de Febrero de 2005, 01:26 »
0
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