Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Ayuda en Renderizar modelos 3D en XNA

Iniciado por Skullwarrior, 06 de Junio de 2011, 06:38:05 PM

« anterior - próximo »

Skullwarrior

Tengo un problema, pues uso un modelo generado a traves de una matriz cuadrada donde sus valores son entre 0 - 200, simulando asi un terreno, separando los vectores x, z segun un espaciado, todo resulta ok, siempre y cuando la camara mire hacia adelante, o sea, que el terreno solo ocupe visualmente un 20% de la pantalla, de esta forma se toma para renderizar 11 milisegundos(aun asi creo que es mucho tiempo)
cuando la camara gira hacia abajo(mirando al suelo), que es donde en toda la pantalla se ve el suelo, se demora entonces 21 milisegundos el renderizar el modelo, lo que conlleva a una reducion sustancial del framerate.
el modelo lo redenrizo de esta forma:
Void DrawModel(Model model)
{
Matrix[] boneTransforms = new Matrix[model.Bones.Count];
model.CopyAbsoluteBoneTransformsTo(boneTransforms) ;

foreach (ModelMesh mesh in model.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
effect.World = boneTransforms[mesh.ParentBone.Index];
effect.View = camera.View;
effect.Projection = camera.Projection;

effect.EnableDefaultLighting();
effect.PreferPerPixelLighting = true;

// Set the fog to match the black background color
effect.FogEnabled = true;
effect.FogColor = new Vector3(1);
effect.FogStart = camera.FarPlaneDistance * .4f;
effect.FogEnd = camera.FarPlaneDistance;
}

mesh.Draw();
}
}


mi correo es este : skullwarrior.sergio@gmail.com
por favor cualqueira que tenga una idea de como reducir el tiempo en que se toma el renderizar el modelo, pues realmente no entiendo, el modelo no cambia, solo el angulo de vison de la camara, y solo aumenta el tiempo de renderizado cuando miro al suelo o tengo de frente a una "montaña" y la camara esta suficientemente cerca como para que la "montaña" ocupe toda la pantalla.

No es la cantidad de poligonos al dibujar, pues he aumentado y disminuido la cantidad de vertices del "terreno" y no ocurre ningun cambio, la lentitud radica a la hora de cuantos de esos vertices son visibles, cuando la pantalla esta llena(o sea la camara esta mirando de frente al suelo o a una montaña) el jeugo se pone lento, lo he probado para una matriz de vertices de 20 * 20 y  de 256 * 256 , y el resultado es el mismo, solo se relentiza cuando hay muchas cosas visibles

blau


XÑA

Hombre, es que esto:

effect.PreferPerPixelLighting = true

es lo que hace que te baje el rendimiento cuando hay pixels en pantalla.

Quítalo, y verás que va a tope!!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.