2013-08-13 4 views
2

J'essaie de dessiner un rectangle de couleur simple sur Monogame (pour Windows8) en utilisant les primitives 3D DrawUserPrimitives et VertexPositionColor, mais la seule chose que je peux voir est un rectangle qui couvre la moitié supérieure de l'écran, comme vous pouvez le voir dans la capture d'écran ci-dessous. Cela se produit lorsque vous dessinez un triangle, aussi.DrawUserPrimitives problèmes sur Monogame

screenshot

Voici mon code:

// camera code 
Camera.Position = new Vector3(0, 1500, 0); 
Camera.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45), GraphicsDevice.Viewport.AspectRatio, 1, 5000); 
Camera.View = Matrix.CreateLookAt(Camera.Position, Vector3.Down, Vector3.Forward); 

VertexPositionColor[] vertexList = new VertexPositionColor[4]; 
BasicEffect basicEffect; 
VertexBuffer vertexBuffer; 

// initializations 
vertexList[0] = new VertexPositionColor(new Vector3(-957, 10, -635), Color.Red); 
vertexList[1] = new VertexPositionColor(new Vector3(957, 10, -635), Color.Lime); 
vertexList[2] = new VertexPositionColor(new Vector3(-957, 10, 635), Color.Yellow); 
vertexList[3] = new VertexPositionColor(new Vector3(957, 10, 635), Color.Blue); 

vertexBuffer = new VertexBuffer(GraphicsDevice, typeof(VertexPositionColor), 4, BufferUsage.WriteOnly); 
vertexBuffer.SetData<VertexPositionColor>(vertexList); 

basicEffect = new BasicEffect(GraphicsDevice); 
basicEffect.VertexColorEnabled = true; 
basicEffect.LightingEnabled = false; 
basicEffect.Projection = Camera.Projection; 

// draw code 
GraphicsDevice.RasterizerState = RasterizerState.CullNone; 
GraphicsDevice.SetVertexBuffer(vertexBuffer); 

foreach (EffectPass p in basicEffect.CurrentTechnique.Passes) 
{ 
    p.Apply(); 
    GraphicsDevice.DrawUserPrimitives<VertexPositionColor>(PrimitiveType.TriangleStrip, vertexList, 0, 2); 
} 

Comme vous pouvez le voir, je l'ai utilisé des couleurs différentes pour les quatre sommets, mais le programme semble en fait de tirer seulement deux d'entre eux: vertexList[0] et vertexList[1]. Une suggestion? Qu'est-ce qui ne va pas?

+0

Je ne vois pas comment Camera.View transforme vos sommets –

Répondre

3

Je pense que vous êtes absent

basicEffect.View = Camera.View; 
+0

Merci, maintenant il fonctionne correctement! – pinckerman