1
\$\begingroup\$

I'm going through a book, and the example it gave me seems like is should work, but when I try and implement it, it falls short.

My Camera class takes three vectors in to generate View and Projection matrices. I'm giving it a position vector of (0,0,5), a target vector of Vector.Zero and a top vector (which way is up) of Vector.Up.

My Three vertices are placed at (0,1,0), (-1,-1,0), (1,-1,0).

It seems like it should work because the vertices are centered around the origin, and thats where I'm telling the camera to look but when I run the game, the only way to get the camera to see the vertices is to set its position to (0,0,-5) and even then the triangle is skewed. Not sure what's wrong here.

Any suggestions would be helpful.

Just to make sure I've given you guys everything (I don't think these are important as the problem seems to be related to the coordinates, not the ability of the game to draw them): I'm using a VertexBuffer and a BasicEffect.

My render code is as follows:

effect.World = Matrix.Identity;
effect.View = camera.view;
effect.Projection = camera.projection;
effect.VertexColorEnabled = true;

foreach (EffectPass pass in effect.CurrentTechnique.Passes)
                {
    pass.Apply();

    GraphicsDevice.DrawUserPrimitives<VertexPositionColor>
         (PrimitiveType.TriangleStrip, verts, 0, 1);
}
\$\endgroup\$
1
  • \$\begingroup\$ In case you are interested about the clockwise / counterclockwise thing, it’s called "Culling". You can even set it in XNA through CullMode. Also see this tutorial. \$\endgroup\$ Commented Dec 4, 2012 at 19:02

1 Answer 1

1
\$\begingroup\$

The first thing which can be wrong is the vertices order. Now they are drawn counterclockwise (if we are looking from the 0,0,5 position. Try to draw them clockwise.

And that your triangle is skewed - you should post some picture. It can be caused by projection matrix. So you should also write how you create it.

\$\endgroup\$
1
  • \$\begingroup\$ Ok, well changing the order worked but that wasn't why it was skewed. I was defining the vertices in an array of VertexPositionColor and I was overwriting the Object at index 1. ie. vert[0] = new VertexPositionColor(variables); vert[1] = new VertexPositionColor(variables); vert[1] = new VertexPositionColor(variables); So thank you for your help, worked perfectly. \$\endgroup\$ Commented Dec 4, 2012 at 21:57

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .