1

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

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

然后我用 PrimitiveType.LineStrip 画了它。

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

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

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

请帮忙..

4

2 回答 2

2

你有一个 z-buffer 问题。您按什么顺序进行 2D 和 3D 绘图?我猜2D应该是第一位的。此外,您应该查看在混合 SpriteBatch 和 3D 操作时如何使渲染状态起作用。

于 2009-10-10T07:52:21.007 回答
1

我设法修复它。所有 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); 
    }
于 2009-10-11T12:14:02.740 回答