xna:在3d对象后面显示2d精灵

时间:2009-10-09 13:48:29

标签: c# xna sprite

我是3D图形事物的初学者,学习xna和csharp。

我想要在2D背景前绘制的3d对象, 3d对象很简单,它只是一条线。我是从2维VertexPositionColor []制作的。

然后我用PrimitiveType.LineStrip绘制它。

我还有一个我用Spritebatch.draw显示的Texture2D。

发生的事情是线条显示在背景的背面,所以我看不到任何线条。

但如果我评论了spritebatch.draw,我可以看到那里的那条线。

请帮助..

2 个答案:

答案 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); 
    }