Sign in to follow this  
jor1980

I only see the primitives one second

Recommended Posts

Hi i have created the next code that reads the data of a 3d eye from a file, but when i execute the code i only see the eye only one second.What is wrong? here is the code: Imports Microsoft.DirectX.Direct3D Imports Microsoft.DirectX Public Class Form1 Private device As Device Dim verticest As CustomVertex.PositionColoredTextured() = New CustomVertex.PositionColoredTextured(112) {} Dim indices As Short() = New Short(626) {} Public Sub Initialize() Dim Present As PresentParameters = New PresentParameters Present.Windowed = True Present.SwapEffect = SwapEffect.Discard device = New Device(0, DeviceType.Hardware, Me.Handle, CreateFlags.SoftwareVertexProcessing, Present) device.RenderState.Lighting = False End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Text = "DirectX Tutorial using Visual Basic" Initialize() Me.Setstyle(Controlstyles.AllPaintingInWmPaint Or Controlstyles.Opaque, True) Dim nºarchivo As Integer = FreeFile() FileOpen(nºarchivo, My.Computer.FileSystem.SpecialDirectories.Desktop & "\ojo23d", OpenMode.Input) For i = 0 To 112 Dim dato As String dato = LineInput(nºarchivo) Dim Datoparts As String() Datoparts = Split(dato, " ") verticest(i).SetPosition(New Vector3(NumerosDecimales(Datoparts(0)), NumerosDecimales(Datoparts(1)), NumerosDecimales(Datoparts(2)))) verticest(i).Color = Color.Red.ToArgb verticest(i).Tu = (NumerosDecimales(dato(3))) verticest(i).Tv = (NumerosDecimales(dato(4))) Next For i = 0 To 208 Dim dato As String dato = LineInput(nºarchivo) Dim Datoparts As String() Datoparts = Split(dato, " ") indices(3 * i) = Datoparts(0) indices((3 * i) + 1) = Datoparts(1) indices((3 * i) + 2) = Datoparts(2) Next End Sub Private Sub Form1_OnPaint(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Paint device.RenderState.CullMode = Cull.None device.Clear(ClearFlags.Target, Color.Black, 1, 0) Dim imagen As New Bitmap("C:\Users\Jorge\Desktop\ojo.bmp") Dim textura As New Texture(device, imagen, Usage.Dynamic, Pool.Default) device.MultiplyTransform(TransformType.Projection, Matrix.PerspectiveFovLH(Math.PI / 4, _ Me.Width / Me.Height, 1, 50)) device.MultiplyTransform(TransformType.World, Matrix.LookAtLH(New Vector3(0, 0, 30), New Vector3(0, 0, 0), New Vector3(0, 1, 0))) device.VertexFormat = CustomVertex.PositionColoredTextured.Format device.SetTexture(0, textura) device.BeginScene() device.DrawIndexedUserPrimitives(PrimitiveType.TriangleList, 0, 113, 209, indices, True, verticest) device.EndScene() device.Present() Me.Invalidate() End Sub

Share this post


Link to post
Share on other sites
Quote:
Original post by Cambo_frog
Don't call Invalidate() in your OnPaint handler.


you were right, now it works ok.

i put that sentence because i saw in a tutorial, but also put the next:

Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)

End Sub

but if i put that i only saw the things behind my form, Could you explain me way those sentences works?


Thank´s for all


Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this