我将模拟汽车在道路网络上的移动。首先,我使用 userindexedprimitives 绘制道路,它工作正常。之后在特定时刻,我将模型添加到场景中。这些模型正在路上,而且似乎还可以。从后面看它们看起来不错,因为它们大致按照创建顺序相互跟随。但是在前视图中,应用程序总是先绘制最后一次添加的车辆,依此类推,因此它们是相互绘制的,没有封面。也许它可以在图像上识别(链接已删除,请参阅更新)。我使用的效果文件是THIS, CurrentTechnique 是“ColoredNoShading”。首先我认为问题可能是这个设置,但其他可能性是抛出关于丢失顶点信息(COLOR0 或 NORMAL 等)的异常,我没有处理它们......也许解决方案很简单,只是我没有不知道...
有人可以帮我吗?
提前致谢
代码基于此方案:
private void DrawModel(Model model, Matrix world, Matrix view, Matrix projection)
{
foreach (ModelMesh mesh in model.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
effect.World = world;
effect.View = view;
effect.Projection = projection;
}
mesh.Draw();
}
}
与视图和投影矩阵相关:
viewMatrix = Matrix.CreateLookAt(new Vector3(0, 170, 0), new Vector3(0, 0, 0), new Vector3(0, 0, -1));
projectionMatrix = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4, graphics.GraphicsDevice.Viewport.AspectRatio, 1.0f, 30000.0f);
effect.CurrentTechnique = effect.Techniques["ColoredNoShading"];
effect.Parameters["xProjection"].SetValue(projectionMatrix);
effect.Parameters["xView"].SetValue(viewMatrix);
更新:
使用 DepthStencilState 属性会更好,但是在这张新图像上,问题是可见的……通过车辆的眼镜,我们只能看到由 userindexedprimitives 绘制的顶点,而看不到模型。