C# 三维墙是混合/透明的

C# 三维墙是混合/透明的,c#,3d,xna,C#,3d,Xna,我试图在XNA中学习一些3D,我使用了一个.pdf文件,名为: XNA 4初学者3D游戏开发示例,在该.pdf中,它向您展示了如何创建一个名为“立方体追逐者”的游戏,您基本上了解了如何生成迷宫、创建平铺地板、墙壁、第一人称相机,以及如何收集对象以完成游戏 所以目前我有一个完全工作的FPS摄像头+运动(虽然没有碰撞),我还有一个迷宫生成器,现在我的问题是,当迷宫生成时,它会创建墙(就像它应该的那样..xD),但墙几乎是透明的。他们有自己的颜色(红色和橙色),但迷宫中的每一面墙都是可见的,我可以看到

我试图在XNA中学习一些3D,我使用了一个.pdf文件,名为:
XNA 4初学者3D游戏开发示例
,在该.pdf中,它向您展示了如何创建一个名为“立方体追逐者”的游戏,您基本上了解了如何生成迷宫、创建平铺地板、墙壁、第一人称相机,以及如何收集对象以完成游戏

所以目前我有一个完全工作的FPS摄像头+运动(虽然没有碰撞),我还有一个迷宫生成器,现在我的问题是,当迷宫生成时,它会创建墙(就像它应该的那样..xD),但墙几乎是透明的。他们有自己的颜色(红色和橙色),但迷宫中的每一面墙都是可见的,我可以看到地图上的每一面墙,所以这就像墙是透明的。。。这很难解释,所以这里有一张图片:

这是我对Maze.cs的绘制方法:

public void Draw(Camera camera, BasicEffect basicEffect)
    {
        basicEffect.VertexColorEnabled = true;
        basicEffect.World = Matrix.Identity;
        basicEffect.View = camera.View;
        basicEffect.Projection = camera.projection;

        foreach(EffectPass pass in basicEffect.CurrentTechnique.Passes)
        {
            pass.Apply();
            device.SetVertexBuffer(floorBuffer);
            device.DrawPrimitives(PrimitiveType.TriangleList, 0, floorBuffer.VertexCount / 3);

            device.SetVertexBuffer(wallBuffer);
            device.DrawPrimitives(PrimitiveType.TriangleList, 0, wallBuffer.VertexCount / 3);
        }
    }

(wallBuffer=walls,floorBuffer=floor..ehh xD)

我认为z缓冲区被禁用,红色是多边形的前面,黄色是背面?Ye,红色代表一面,黄色代表另一面。什么是z缓冲区?抱歉,如果这是一个nooby问题..:/Z缓冲区是深度缓冲区,它将阻止光栅化器渲染像素。(就像第一堵墙后面的墙一样)。你应该在Z-buffer,Depthbuffer()上用谷歌搜索,你可能还想看看背面剔除,(防止渲染多边形的背面。我在google上搜索了Z-Buffer以及如何启用Z-Buffer之类的东西,但没有取得任何进展,我尝试用我的代码进行更多的实验,但仍然是一样的:/any ideas…?对不起,我做了一些direct3d/wpf viewport3d,从未深入xna。有一些论坛,maybee,他们可以帮助。Start此处: