2011-02-04 131 views
1

我使用XNA来可视化一些数据,我试图使用数据广告牌和spritebatch进行HUD文本绘制。XNA SpriteBatch导致BasicEffect出现问题

对于广告牌,我用下面的例子中,伟大的工程: http://create.msdn.com/en-US/education/catalog/sample/3d_audio

在这个例子中,有一个猫,狗精灵,这里的猫经过前面或后面的狗,取决于他们的位置和相机的位置,如你所料。 Cat.Draw和Dog.Draw被调用的顺序并不重要。这些人是从BasicEffect中抽取的。

但是,如果我添加一个继承DrawableGameComponent并使用SpriteBatch的类,其他组件中的BasicEffect将失去深度排序,并且Quads按照调用顺序绘制。请注意,此组件通过this.Components.Add(...)添加到Game类。

BasicEffect和SpriteBatch之间是否存在不兼容?每当调用SpriteBatch.Begin()/ End()时都会出现问题。如果我不这么称呼,那么猫/狗就会呈现出来。

任何想法?

回答

2

您需要重置SpriteBatch更改的一些呈现器。

尝试之前,你的basiceffect通话设置这些:

GraphicsDevice.BlendState = BlendState.Opaque; 
GraphicsDevice.DepthStencilState = DepthStencilState.Default; 

有关哪些渲染状态SpriteBatch涂改: http://blogs.msdn.com/b/shawnhar/archive/2010/06/18/spritebatch-and-renderstates-in-xna-game-studio-4-0.aspx

+0

非常感谢您指出了这一点。由于我使用XNA4,因此我不得不按照您发布的文章顶部的2010更新链接。花了我5秒,像魅力一样工作。再次感谢。 – bufferz 2011-02-04 20:36:54

相关问题