我是3D图形事物的初学者,学习xna和csharp。
我想要在2D背景前绘制的3d对象, 3d对象很简单,它只是一条线。我是从2维VertexPositionColor []制作的。
然后我用PrimitiveType.LineStrip绘制它。
我还有一个我用Spritebatch.draw显示的Texture2D。
发生的事情是线条显示在背景的背面,所以我看不到任何线条。
但如果我评论了spritebatch.draw,我可以看到那里的那条线。
请帮助..
答案 0 :(得分:2)
那里有z-buffer问题。您以什么顺序进行2D和3D绘图? 2D应该是我猜的第一个。此外,在混合SpriteBatch和3D操作时,您应该查看how to make render states work。
答案 1 :(得分:1)
我设法解决了这个问题。 所有的3D绘制方法都应该在spritebatch.begin和end之后。
我所做的是在spritebatch.begin和end之后放置effect.begin和pass.begin
这是game1.cs上绘制方法的代码(使用向导时的默认文件名)
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);
}