Results 1 to 1 of 1

Thread: Creating 3D XNA using DrawIndexedPrimitives

  1. #1
    njsokalski is offline VB.NET Forum Fanatic
    .NET Framework
    .NET 3.5
    Join Date
    Mar 2011
    Posts
    102
    Reputation
    31

    Creating 3D XNA using DrawIndexedPrimitives

    I am relatively new to 3D (and XNA in general), and am working on my first project involving 3D. Right now, I am simply trying to make sure I understand how to draw a triangle using the DrawIndexedPrimitives method. I have been able to draw one using the following:

    In my override of LoadContent I have:

    Dim vertices As New List(Of VertexPositionNormalTexture)
    Dim indices As New List(Of UShort)
    vertices.Add(New VertexPositionNormalTexture(New Vector3(0, 0, 0), New Vector3(0, 0, 1), Nothing))
    vertices.Add(New VertexPositionNormalTexture(New Vector3(0, 50, 0), New Vector3(0, 0, 1), Nothing))
    vertices.Add(New VertexPositionNormalTexture(New Vector3(50, 0, 0), New Vector3(0, 0, 1), Nothing))
    indices.Add(0)
    indices.Add(1)
    indices.Add(2)
    Me.vertexbfr = New VertexBuffer(GraphicsDevice, GetType(VertexPositionNormalTexture), vertices.Count, BufferUsage.None)
    Me.vertexbfr.SetData(vertices.ToArray())
    Me.indexbfr = New IndexBuffer(GraphicsDevice, GetType(UShort), indices.Count, BufferUsage.None)
    Me.indexbfr.SetData(indices.ToArray())
    Me.basiceff = New BasicEffect(GraphicsDevice)
    Me.basiceff.EnableDefaultLighting()
    Me.basiceff.PreferPerPixelLighting = True

    And in my override of Draw I have:
    GraphicsDevice.Clear(Color.CornflowerBlue)
    Me.basiceff.World = Matrix.CreateFromYawPitchRoll(0, 0, 0) * Matrix.CreateTranslation(New Vector3(0, 0, 0))
    Me.basiceff.View = Matrix.CreateLookAt(New Vector3(100, 100, 100), New Vector3(0, 0, 0), Vector3.Up)
    Me.basiceff.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45), GraphicsDevice.Viewport.AspectRatio, 1, 10000)
    Me.basiceff.DiffuseColor = Color.Red.ToVector3()
    GraphicsDevice.SetVertexBuffer(Me.vertexbfr)
    GraphicsDevice.Indices = Me.indexbfr
    For Each effpass As EffectPass In Me.basiceff.CurrentTechnique.Passes
    effpass.Apply()
    GraphicsDevice.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, Me.vertexbfr.VertexCount, 0, CInt(Me.indexbfr.IndexCount / 3))
    Next
    MyBase.Draw(gameTime)

    This works fine, but if I change the code that adds the indices to:
    indices.Add(0)
    indices.Add(2)
    indices.Add(1)

    it does not work. This is a triangle, shouldn't it be irrelevant what order the indices are in (as long as they are in groups of 3)? This is my first time using 3D or XNA, so it is quite possible that I just don't know about something, but if somebody could help me here it would be greatly appreciated. Thanks.
    Last edited by Paszt; 05-17-2012 at 9:03 PM. Reason: Added xcode markup: [xcode=vb]CODE HERE[/xcode]
    Nathan Sokalski

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Harvest time tracking