在彼此顶部绘制的立方体

在我之前的问题后面 : 限制绘制调用的数量

我已经降低了我的平局只有58帧! 但现在我有另一个问题。 我有2500个立方体都在相同的位置绘制。 我不知道为什么。 在我以前的问题所做的一切工作正常。 这是我绘制的方法,绘制我的大块。

public void Draw(BasicEffect effect, ThirdPersonCam cam) { device.SetVertexBuffer(vertexBuffer); device.Indices = indexBuffer; foreach (EffectPass pass in effect.CurrentTechnique.Passes) { no++; pass.Apply(); effect.VertexColorEnabled = false; effect.TextureEnabled = true; effect.Texture = grass; Matrix center = Matrix.CreateTranslation(new Vector3(-0.5f, -0.5f, -0.5f)); Matrix scale = Matrix.CreateScale(1f); Matrix translate = Matrix.CreateTranslation(cubePosition); effect.World = center * scale * translate; effect.View = cam.view; effect.Projection = cam.proj; effect.FogEnabled = true; effect.FogColor = Color.CornflowerBlue.ToVector3(); effect.FogStart = 1.0f; effect.FogEnd = 50.0f; device.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, 8, 0, 12); } 

代码在方法中的sorting方式可能存在一些问题,但这是在移动之后。 将DrawIndexedPrimitives行中的值更改为vertices.Count和cubes.Count可以绘制更多的立方体,但是非常奇怪。 有四排五十,然后是另一排,只有十排

它(可能)是您的DrawIndexedPrimitives调用。 正确的论据应该是:

 device.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, vertices.Count, 0, indices.Count / 3); 

首先使用用于创建缓冲区的列表中的Count数值(按照您以前的问题)。

请参阅MSDN上的文档 。