C# 奇异地形撕裂

C# 奇异地形撕裂,c#,.net,xna,terrain,tearing,C#,.net,Xna,Terrain,Tearing,让我先发布图片 发生撕裂的实体射击 那个地方的线框照片 我主要是使用,而渲染代码是 主渲染 public void Render() { device.Clear(Color.CornflowerBlue); RasterizerState rs = new RasterizerState(); rs.CullMode = cullmode; rs.FillMode = fillmode; dev

让我先发布图片

发生撕裂的实体射击

那个地方的线框照片

我主要是使用,而渲染代码是

主渲染

    public void Render()
    {
        device.Clear(Color.CornflowerBlue);
        RasterizerState rs = new RasterizerState();
        rs.CullMode = cullmode;
        rs.FillMode = fillmode;
        device.RasterizerState = rs;

        effect.Parameters["xView"].SetValue(camera.ViewMatrix);
        effect.Parameters["xProjection"].SetValue(camera.ProjectionMatrix);
        effect.Parameters["xWorld"].SetValue(Matrix.Identity);
        effect.Parameters["xEnableLighting"].SetValue(true);
        effect.Parameters["xLightDirection"].SetValue(lightDirection);
        effect.Parameters["xAmbient"].SetValue(0.5f);

        globals.game.terrain.Render();

        globals.game.spriteBatch.Begin();
        globals.console.Render();
        globals.game.spriteBatch.End();
    }
Terrain.Render()


我已经被这个问题困扰了很长时间(不知道它是由我的编码技能、xna还是g-card配置引起的…),所以我想知道是否有人知道是什么导致了这个问题?

暂时对spritebatch开始、绘制和结束代码进行注释,看看这是否有区别。它可能取决于缓冲区中的顶点顺序,也可能不取决于顶点顺序


如果确实有帮助,可以在此处找到您的解决方案:

@DanNeely我无法发布超过2个URL…这就是我禁用Reimers链接的原因…暂时注释spritebatch开始、绘制和结束代码,看看这是否有区别。它可能取决于缓冲区中的顶点顺序,也可能不取决于顶点顺序。如果确实有帮助,可以在这里找到您的解决方案:@SteveH Yea。这就成功了…谢谢你,穆奇!我永远不会认为2d文本渲染会破坏3d渲染…请总结在该链接中找到的相关内容。如果这种联系消失了,那么这个答案的主要内容将很难找到。如果讨论了不相关的问题,总结也有助于了解哪些部分适用于此问题。
    public void Render()
    {
        globals.game.graphics.effect.CurrentTechnique = globals.game.graphics.effect.Techniques["Colored"];

        globals.game.graphics.effect.Parameters["xWorld"].SetValue(worldMatrix);
        foreach (EffectPass pass in  globals.game.graphics.effect.CurrentTechnique.Passes)
        {
            pass.Apply();

            globals.game.graphics.device.Indices = indexBuffer;
            globals.game.graphics.device.SetVertexBuffer(vertexBuffer);
            globals.game.graphics.device.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, vertices.Length, 0, indices.Length / 3);          

        }
    }