2

DrawUserPrimitives3D プリミティブとを使用して、Monogame (Windows8 用) で単純な色付きの四角形を描画しようとしてVertexPositionColorいますが、下のスクリーンショットでわかるように、画面の上半分を覆う四角形しか表示されません。これは、三角形を描くときにも発生します。

スクリーンショット

これが私のコードです:

// 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);
}

ご覧のとおり、4 つの頂点すべてに異なる色を使用しましたが、プログラムが実際に描画するのはそのうちの 2 つだけです:vertexList[0]vertexList[1]. なにか提案を?どうしたの?

4

1 に答える 1