xna: отображать 2d спрайты за 3d объектом - PullRequest
1 голос
/ 09 октября 2009

Я новичок в 3D-графике и изучаю xna и csharp.

У меня есть 3D-объект, который я хочу нарисовать перед 2-мерным фоном, 3D-объект прост, это просто линия. я сделал это из двухмерного VertexPositionColor [].

и затем я нарисовал его с помощью PrimitiveType.LineStrip.

, а также у меня есть Texture2D, который я отображал с помощью Spritebatch.draw.

происходит то, что линия отображается на заднем фоне, поэтому я не вижу ни одной строки.

но если я прокомментировал spritebatch.draw, я смогу увидеть строку там.

пожалуйста, помогите ..

Ответы [ 2 ]

2 голосов
/ 10 октября 2009

У вас есть проблема с z-буфером. В каком порядке вы делаете 2D и 3D рисование? 2D должен прийти первым, я думаю. Кроме того, вы должны проверить , как заставить состояния рендеринга работать при смешивании операций SpriteBatch и 3D.

1 голос
/ 11 октября 2009

мне удалось это исправить. все методы 3D-рисования должны быть после spritebatch.begin и end.

что я сделал, так это поместил effect.begin и pass.begin после spritebatch.begin и end

вот код для метода draw в 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); 
    }
...