我知道以下是一个模糊的问题,但我遇到了我在 XNA 中没有预料到的性能问题。
我有一个低多边形模型(它有 18 个面和 14 个顶点),我试图在屏幕上绘制(高!)次。在我绘制这个模型 5000 多次之前,我得到了超过 60 FPS(在一台像样的机器上)。我在这里问太多了吗?我非常希望至少将该数字增加一倍或三倍(10-15k)。
下面给出了我实际绘制模型的代码。我试图从绘制周期中消除尽可能多的计算,我可以从中挤出更多,还是更好的替代方案?
注意: tile.Offset 在初始化期间计算一次,而不是每个周期。
foreach (var tile in Tiles)
{
var myModel = tile.Model;
Matrix[] transforms = new Matrix[myModel.Bones.Count];
myModel.CopyAbsoluteBoneTransformsTo(transforms);
foreach (ModelMesh mesh in myModel.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
// effect.EnableDefaultLighting();
effect.World = transforms[mesh.ParentBone.Index]
* Matrix.CreateTranslation(tile.Offset);
effect.View = CameraManager.ViewMatrix;
effect.Projection = CameraManager.ProjectionMatrix;
}
mesh.Draw();
}
}