1

私は3Dグラフィックスの初心者で、xnaとcsharpを学んでいます。

2Dの背景の前に描画したい3Dオブジェクトがあります。3Dオブジェクトは単純で、単なる線です。2次元のVertexPositionColor[]から作成しました。

次に、PrimitiveType.LineStripを使用して描画しました。

また、Spritebatch.drawで表示したTexture2Dがあります。

何が起こっているのかというと、背景の後ろに線が表示されているので、線が見えません。

しかし、spritebatch.drawにコメントすると、そこに行が表示されます。

助けてください..

4

2 に答える 2

2

そこにzバッファの問題があります。2D と 3D の描画はどのような順序で行っていますか? 2Dが最初に来るべきだと思います。また、SpriteBatch と 3D 操作を混在させるときにレンダリング状態を機能させる方法も確認する必要があります。

于 2009-10-10T07:52:21.007 に答える
1

私はそれを修正することができました。すべての 3D 描画メソッドは、spritebatch.begin と end の後にある必要があります。

私がしたことは、spritebatch.begin と end の後に effect.begin と pass.begin を配置することでした。

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 に答える