背后的顶点在前面绘制 - XNA
题
好吧,我只是为此而创造了一个我的世界地形东西。我遇到的问题是,如果您以一定角度看一些实际上在其他面后面的面孔在它们面前绘制的面孔,因此不会显示出那里的实际脸。像Minecraft一样,我将地形分开为区域,当建造顶点时,只显示了“外部”面。出于某种原因,这也没有绘制顶部或左侧块。除了所有这些问题外,面孔似乎都重叠,即(只能看到一半的脸)
这是它的外观(注意我只画顶部面孔,因为我必须修复其他面孔): http://s1100.photobucket.com/albums/g420/darestium/?action=viewT = minecraftliketerrain.png
我还使用以下方法绘制所有区域(我正在使用Reimer的效果文件,直到我可以写自己的:)::):
public void Draw(Player player, World world)
{
effect.CurrentTechnique = effect.Techniques["TexturedNoShading"];
effect.Parameters["xWorld"].SetValue(Matrix.Identity);
effect.Parameters["xProjection"].SetValue(player.Camera.ProjectionMatrix);
effect.Parameters["xView"].SetValue(player.Camera.ViewMatrix);
effect.Parameters["xCamPos"].SetValue(player.Camera.Position);
effect.Parameters["xTexture"].SetValue(world.TextureAlias.SheetTexture);
effect.Parameters["xCamUp"].SetValue(player.Camera.UpDownRotation);
for (int x = 0; x < world.regions.GetLength(0); x++)
{
for (int y = 0; y < world.regions.GetLength(1); y++)
{
foreach (EffectPass pass in effect.CurrentTechnique.Passes)
{
pass.Apply();
Region region = world.regions[x, y];
if (player.Camera.BoundingFrustum.Contains(region.BoundingBox) != ContainmentType.Disjoint)
{
device.SetVertexBuffer(region.SolidVertexBuffer);
//device.Indices = region.SolidIndices;
device.DrawPrimitives(PrimitiveType.TriangleList, 0, region.VertexCount);
//device.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, region.VertexCount, 0, region.SolidIndices.IndexCount / 3);
}
}
}
}
}
感谢您将不胜感激:)
解决方案
看起来Z-Buffer被禁用。尝试设置:
GraphicsDevice.DepthStencilState = DepthStencilState.Default;
您提到的没有绘制顶部/左块的问题可能与您的顶点缓冲区生成代码有关(如果是的话,请尝试特别询问有关该问题的另一个问题)。
不隶属于 StackOverflow