后面的顶点正在前面绘制-XNA

后面的顶点正在前面绘制-XNA,xna,draw,vertex,vertices,zbuffer,Xna,Draw,Vertex,Vertices,Zbuffer,嗯,我正在创造一个地雷地形的东西只是为了见鬼。我的问题是,如果你从某个角度看,一些实际上在其他人后面的面被画在他们前面,因此没有显示实际存在的面。像minecraft一样,我将地形划分为多个区域,当构建vertexbuffer时,只显示“外部”面。出于某种原因,它也没有绘制最上面或最左边的块。除了所有这些问题外,脸似乎是重叠的,即(只能看到半张脸) 下面是它的外观(注意,我只画了上面的面,因为我必须修复其他面): 我还使用以下方法一次绘制所有区域(我使用reimer的效果文件,直到我可以编写自己

嗯,我正在创造一个地雷地形的东西只是为了见鬼。我的问题是,如果你从某个角度看,一些实际上在其他人后面的面被画在他们前面,因此没有显示实际存在的面。像minecraft一样,我将地形划分为多个区域,当构建vertexbuffer时,只显示“外部”面。出于某种原因,它也没有绘制最上面或最左边的块。除了所有这些问题外,脸似乎是重叠的,即(只能看到半张脸)

下面是它的外观(注意,我只画了上面的面,因为我必须修复其他面):

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

public void Draw(玩家,世界)
{ 
effect.currentTechnical=effect.technologies[“纹理无阴影”];
效应.参数[“xWorld”].设定值(矩阵.恒等式);
effect.Parameters[“xProjection”].SetValue(player.Camera.ProjectionMatrix);
效果参数[“xView”].SetValue(播放器、相机、ViewMatrix);
效果参数[“xCamPos”].SetValue(播放器、相机、位置);
effect.Parameters[“xTexture”].SetValue(world.TextureAlias.SheetTexture);
效果参数[“xCamUp”].SetValue(播放器、相机、上下旋转);
for(intx=0;x

非常感谢您的帮助:)

看起来Z缓冲区已禁用。尝试设置:

GraphicsDevice.DepthStencilState = DepthStencilState.Default;

您提到的没有绘制顶部/左侧块的问题可能与顶点缓冲区生成代码有关(如果是,请尝试专门询问另一个问题)。

您的
光栅化状态设置是什么?非常感谢,解决了这个问题:),是的,我已经检查并重新检查了我的“脸”代码,对我来说,它似乎应该是有效的,就像你建议的那样,我将在这个主题上再放一次。非常感谢,达雷斯蒂姆
GraphicsDevice.DepthStencilState = DepthStencilState.Default;