为什么在Visual Studio XNA中实现文本会对3D模型产生不利影响?

本文关键字:模型 3D 影响 Studio Visual XNA 文本 实现 为什么 | 更新日期: 2023-09-27 18:12:10

当我尝试在我的MonoGame程序中添加文本时,我遇到了一个问题。它停止正确渲染3D对象,切割一些对象的正面,而不显示其他对象。

我也试过在绘制模型后结束批处理,达到同样的效果

public override void Draw(GameTime gameTime)
    {
        spriteBatch.Begin();
        string output = "Score";
        spriteBatch.DrawString(spriteFont, output, Vector2.Zero, Color.LightGreen,
            0, Vector2.Zero, 1.0f, SpriteEffects.None, 0.5f);
        spriteBatch.End();
        foreach (BasicModel model in models)
        {
            model.Draw(((Game1)Game).GraphicsDevice, ((Game1)Game).mainCamera);
        }
        base.Draw(gameTime);
    }

为什么我的文本实现搞砸了我的3D模型?

为什么在Visual Studio XNA中实现文本会对3D模型产生不利影响?

SpriteBatch.Begin()以一种最适合2d渲染但不适用于3d渲染的方式改变了一些图形管道渲染状态。

所以在渲染2d之后,你需要为3d渲染重置这些状态。

GraphicsDevice.BlendState = BlendState.Opaque;
GraphicsDevice.DepthStencilState = DepthStencilState.Default;

现在你的3d会画得很好。查看此链接获取更多信息

在你的spriteBatch.End()foreach()之间添加这两行