我在XNA中以正确的顺序绘制3D模型时遇到了麻烦。
以下是描述问题的两张图片:
Pic1:http://imgur.com/wGPIk&L5AY1l 图2:http://imgur.com/wGPIkl&L5AY1
球向下移动,一旦它与地形相交,视角就会发生变化,看起来好像球在地形后面。
如果我改变了绘画的顺序,它看起来就像球一直在地形的顶部..
有人可以解释一下如何解决这个问题吗?
提前致谢
答案 0 :(得分:10)
问题是SpriteBatch调用在角落里绘制你的FPS计数器。
SpriteBatch会更改图形设备的状态。每当您完成绘制2D对象(在这种情况下,左上角的帧速率计数器)时,您需要恢复设备状态。
致电SpriteBatch.End()
后,请添加以下代码:
device.DepthStencilState = DepthStencilState.Default;
其中device
是对您正在使用的当前GraphicsDevice
的引用。
答案 1 :(得分:1)
这看起来像是一个ZBuffer问题。你检查过你的Zbuffer是否已启用并正常工作?试试David Lively所说的话。如果可行,请检查您是否未在SpriteBatch
类的开始和End调用内绘制3D模型。
Begin
准备用于绘制2D对象的设备,如果您现在尝试调用3D绘图,则此操作无效。 End确保为2D设置的所有内容都未设置并恢复到Begin调用之前的状态。