为什么在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模型?
SpriteBatch.Begin()以一种最适合2d渲染但不适用于3d渲染的方式改变了一些图形管道渲染状态。
所以在渲染2d之后,你需要为3d渲染重置这些状态。
GraphicsDevice.BlendState = BlendState.Opaque;
GraphicsDevice.DepthStencilState = DepthStencilState.Default;
现在你的3d会画得很好。查看此链接获取更多信息
在你的spriteBatch.End()
和foreach()
之间添加这两行