Aşağıdakilerin belirsiz bir soru olduğunun farkındayım, ancak XNA'da beklemediğim performans sorunlarım var.XNA, kaç tane (düşük poli) model kullanabilir?
Ekrana bir (yüksek!) Sayıda çizim yapmaya çalıştığım düşük bir poli modelim var (18 yüz ve 14 köşesi var). Bu modeli 5000+ kez çizene kadar 60'dan fazla FPS (iyi bir makinede) elde ediyorum. Burada çok mu soruyorum? En azından bu sayıyı (10-15k) iki katına çıkarmak veya üç katına çıkarmak isterim.
Modellerin fiili çizim kodum aşağıda verilmiştir. Çekme döngüsünden olabildiğince fazla hesaplamayı elimden gelmeye çalıştım, ondan daha fazla sıkılabiliyor mu yoksa daha iyi alternatifler mi var?
Not: tile.Offset, her döngüde değil, başlatma sırasında bir kez hesaplanır.
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();
}
}
+1 Tam olarak ne söyleyebilirdim. XNA Örneğini kesinlikle tavsiye ederim, kendi modellerinizi çizmek için kolayca değiştirebilirsiniz. – Hannesh
Teşekkür ederim! Bu doğru hakkında geliyor.Bu akşam işten eve döndüğümde önerilerinden birkaçı vereceğim ve performansın nasıl arttığını göreceksiniz (ve bunu cevap olarak işaretleyin!) – Necrototem
Belirtilen sunum http: // ce'ye taşındı. .U-sys.org/Veranstaltungen/Interaktive% 20Computergraphik% 20 (Stamminger) /papers/BatchBatchBatch.pdf – 0xBADF00D