后面的顶点被画在前面- XNA



好吧,我正在创建一个minecraft地形的东西只是为了它的heck。我的问题是,如果你从某个角度看,一些实际上在别人后面的脸被画在他们前面,因此没有显示出真正在那里的脸。像《我的世界》一样,我将地形划分为多个区域,当建立顶点缓冲区时,只显示"外部"的面。由于某些原因,它也没有绘制最顶部和最左侧的块。除了所有这些问题外,脸似乎是重叠的(只能看到一半的脸)

这是它的样子(注意,我只画顶部的面,因为我必须修复其他的):http://s1100.photobucket.com/albums/g420/darestium/?action=view&current=minecraftliketerrain.png

我也用以下方法一次性绘制所有区域(我使用雷默的效果文件,直到我可以自己写:):

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缓冲区被禁用了。试着设置:

GraphicsDevice.DepthStencilState = DepthStencilState.Default;

问题与它不画的顶部/左侧块,你提到的,可能是一个问题与你的顶点缓冲区生成代码(如果是这样,试着问另一个问题,特别是关于这个问题)。

相关内容

  • 没有找到相关文章

最新更新