help: meshes in directx

reinjan

New member
Joined
Apr 28, 2006
Messages
1
Location
Ghent, Belgium
Hello

Im not new to directx but i just cant figure out how to load a mesh, not even the teapot :(

i have this code that i think has no flaws, but it just wont draw my teapot.

can someone help me?

Code:
Dim device As device

    Private teapot As Mesh              the teapot mesh
    Private teapotColor As Material     used to color the teapot
    Private world As Matrix             positions the teapot in the scene
    Private view As Matrix              positions the camera in the scene
    Private projection As Matrix        controls scene perspective
    Private Sub meshes2_teapot_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Show()
        Me.Select()

        Dim Err As Boolean = True
        Try
            Dim Present As PresentParameters = New PresentParameters
            With Present
                .Windowed = True
                .SwapEffect = SwapEffect.Discard
                .EnableAutoDepthStencil = True
                .AutoDepthStencilFormat = DepthFormat.D16
            End With
            projection = Matrix.PerspectiveFovLH((Math.PI / 4.0), Present.BackBufferWidth / Present.BackBufferHeight, 1.0, 100.0)

            Me.Show()
            device = New Device(0, DeviceType.Hardware, Me, CreateFlags.SoftwareVertexProcessing, Present)
            Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.Opaque, True)

        Catch
            Err = False
        End Try
        If Err = False Then
            MessageBox.Show("Fout zit in InitializeGraphics")
            Return
        End If
        Do While Me.Created
            Application.DoEvents()
            createmesh("C:\Documents and Settings\Reintje\Mijn documenten\Reinjan\informatica en school\GIP\Models")
        Loop
    End Sub
    Private Sub createmesh(ByVal path As String)

            the teapot is available as a static method from Mesh
        teapot = Mesh.Teapot(device)
            setup the color for the teapot
        teapotColor = New Material
        teapotColor.Diffuse = Color.Red
        teapotColor.Ambient = teapotColor.Diffuse

            set initial values for the view and world transforms            
        view = Matrix.LookAtLH(New Vector3(0, 3.5, -4), New Vector3(0, 0, 0), New Vector3(0, 1, 0))
        world = Matrix.Identity


            enable z-buffering
        device.RenderState.ZBufferEnable = True
            enable lighting
        device.RenderState.Lighting = True
            set the ambient color
        device.RenderState.Ambient = Color.Gray

            configure a directional light
        device.Lights(0).Type = LightType.Directional
        device.Lights(0).Direction = New Vector3(2.0, -1.0, 0.0)
        device.Lights(0).Diffuse = Color.White
        device.Lights(0).Enabled = True
        device.Lights(0).Update()

        Dim device2 As Device = device

            clear the device in preparation for rendering
        device.Clear(ClearFlags.Target Or ClearFlags.ZBuffer, _
            Color.Black, 1.0, 0)

            begin the scene
        device.BeginScene()

        device.Transform.World = world
        device.Material = teapotColor
        device.SetTexture(0, Nothing)
        teapot.DrawSubset(0)

        device.Transform.View = view
        device.Transform.Projection = projection

        device.EndScene()
    End Sub
 
Code:
         do this before your render loop else youll keep recreating the teapot 
        createmesh("C:\Documents and Settings\Reintje\Mijn documenten\Reinjan\informatica en school\GIP\Models")
        Do While Me.Created
            Application.DoEvents()
                clear the device in preparation for rendering
            device.Clear(ClearFlags.Target Or ClearFlags.ZBuffer,           Color.Black, 1.0, 0)
                begin the scene
            device.BeginScene()
            device.Transform.World = world
            device.Material = teapotColor
            device.SetTexture(0, Nothing)
            teapot.DrawSubset(0)
            device.Transform.View = view
            device.Transform.Projection = projection
            device.EndScene()
             New line
            device.Present()            
        Loop
    End Sub
    
    Private Sub createmesh(ByVal path As String)
            the teapot is available as a static method from Mesh
        teapot = Mesh.Teapot(device)
            setup the color for the teapot
        teapotColor = New Material
        teapotColor.Diffuse = Color.Red
        teapotColor.Ambient = teapotColor.Diffuse
            set initial values for the view and world transforms            
        view = Matrix.LookAtLH(New Vector3(0, 3.5, -4), New Vector3(0, 0, 0), New Vector3(0, 1, 0))
        world = Matrix.Identity
            enable z-buffering
        device.RenderState.ZBufferEnable = True
            enable lighting
        device.RenderState.Lighting = True
            set the ambient color
        device.RenderState.Ambient = Color.Gray
            configure a directional light
        device.Lights(0).Type = LightType.Directional
        device.Lights(0).Direction = New Vector3(2.0, -1.0, 0.0)
        device.Lights(0).Diffuse = Color.White
        device.Lights(0).Enabled = True
        device.Lights(0).Update()
    End Sub
 
Back
Top