我是 3D 图形的初学者,学习 xna 和 csharp。
我有 3d 对象,我想在 2d 背景前绘制,3d 对象很简单,它只是一条线。我是从二维 VertexPositionColor[] 制作的。
然后我用 PrimitiveType.LineStrip 画了它。
我还有一个用 Spritebatch.draw 显示的 Texture2D。
发生的事情是线条显示在背景的后面,所以我看不到任何线条。
但如果我评论了 spritebatch.draw,我可以在那里看到这条线。
请帮忙..
你有一个 z-buffer 问题。您按什么顺序进行 2D 和 3D 绘图?我猜2D应该是第一位的。此外,您应该查看在混合 SpriteBatch 和 3D 操作时如何使渲染状态起作用。
我设法修复它。所有 3D 绘制方法都应该在 spritebatch.begin 和 end 之后。
我所做的是将 effect.begin 和 pass.begin 放在 spritebatch.begin 和 end 之后
这是game1.cs上draw方法的代码(使用向导时的默认文件名)
protected override void Draw(GameTime gameTime)
{
graphics.GraphicsDevice.Clear(Color.Black);
spriteBatch.Begin();
GameEngine.Draw(GameEngine,gameTime);
spriteBatch.End();
//resetRenderState3D();
GameEngine.Draw3D(GameEngine, gameTime);
base.Draw(gameTime);
}