Soy consciente de que la siguiente es una pregunta vaga, pero estoy llegando a problemas de rendimiento que no anticipé en XNA.¿Cuántos modelos (de baja poli) puede manejar XNA?
Tengo un modelo de poli baja (tiene 18 caras y 14 vértices) que estoy tratando de dibujar en la pantalla un (alto) número de veces. Tengo más de 60 FPS (en una máquina decente) hasta que dibujo este modelo más de 5000 veces. ¿Estoy pidiendo demasiado aquí? Me gustaría duplicar o triplicar ese número (10-15k) al menos.
Mi código para dibujar los modelos se muestra a continuación. He intentado eliminar la mayor cantidad posible de computación del ciclo de sorteo, ¿puedo extraer más de ella o mejores alternativas todas juntas?
Nota: tile.Offset se calcula una vez durante la inicialización, no en cada ciclo.
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 Exactamente lo que hubiera dicho. Recomiendo mucho XNA Sample, realmente puedes modificarlo fácilmente para dibujar tus propios modelos. – Hannesh
¡Gracias! Esto suena bien.Cuando llegue a casa del trabajo esta tarde, intentaré algunas de sus sugerencias y veré cómo mejora el rendimiento (¡y marque esto como una respuesta si lo hace!) – Necrototem
La presentación mencionada fue trasladada a http: // ce .u-sys.org/Veranstaltungen/Interaktive% 20Computergraphik% 20 (Stamminger) /papers/BatchBatchBatch.pdf – 0xBADF00D