一个令人困惑的问题引起了我的兴趣。在对我的游戏进行了一定程度的编程并且它正常工作之后,我已经穿过了一个模型,当我渲染它时,它不会出现在关卡中。我已经试过扩大规模,缩小规模,旋转它,检查和双重检查它的渲染矩阵位置,它似乎并没有渲染。我已经在完全相同的功能中实现了其他模型,并且它们完美呈现。虽然我不认为模型存在问题(顺便说一下,我所有的模型都是“.X”文件),因为当模型通过DxViewer打开时,模型显得很完美。所以我不确定可能导致这个问题发生的原因。XNA渲染问题
临时代码,我用它来检查的车型将如何看待在游戏中的一个样本:
static public void RenderTmp(Model model, float scale)
{
foreach (ModelMesh mesh in model.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
effect.PreferPerPixelLighting = true;
effect.World = Matrix.CreateScale(scale) * Matrix.CreateTranslation(0, 0, 0);
effect.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(90), Globals.g_Device.Viewport.AspectRatio, 1, 1000);
effect.View = Matrix.CreateLookAt(new Vector3(0, 50, 0), new Vector3(0, 0, 0), Vector3.Forward);
}
mesh.Draw();
}
}
我现在认为这可能是从3ds Max软件本身的出口问题,我在检查代码并且我不相信这是问题所在。
你可以发布一些代码给我们看看 – harryovers 2010-02-26 14:23:44
嘿家伙,嗯我相当肯定,法线正面临正确的方式,因为它在DxViewer中显示正确(有没有其他方式可以检查法线)。是的,模型正在使用的纹理正在与应用程序一起编译(如果找不到模型的纹理,c#将不会编译)。 – 2010-02-27 05:45:43