Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: Topper en 01 de Diciembre de 2004, 04:26:53 PM

Título: [haddd] Timer Para Cálculo De 'frames Per Second'
Publicado por: Topper en 01 de Diciembre de 2004, 04:26:53 PM
 Hola Haddd, he estado probando el Timer que utilizas con el motor en C# para el cálculo de frames por segundo, y no sé qué coño estaré haciendo mal puesto que siempre me retorna en modo Windowed unos 70 frames por segundo, dando igual que renderice mis objetos con tropecientos triángulos o que simplemente haga un clear del Device a cada Frame y muestre la estadística de frames.  (nooo)

El caso es que aunque aumente el tamaño de la ventana no se aprecian diferencias significativas en el cálculo de frames. Sabes a qué puede ser debido?

yo inicio el timer tal que así:


[STAThread]
static void Main()
{
using (Form1 frm = new Form1())
{
 frm.Show();
 Timer.Start();
 while(frm.Created)
 {
  frm.Render();
  Application.DoEvents();
 }
 Timer.Stop();
}
}


y actualizo estadísticas después de cada Device.Present()


//inicio de la escena
DXManager.device.BeginScene();

//dibujo frames por segundo mediante un Font y DrawText
myFont.DrawText(null, "FPS: "+estadisticas.stringFps, new Rectangle(20,10,140,30), DrawTextFormat.Left, Color.Red);


//fin de la escena
DXManager.device.EndScene();

//mostramos resultado
DXManager.device.Present();

estadisticas.Actualizar();



Sabes qué demonios puede estar ocurriendo?

PD: No utilizo el FrameWork de tu motor sino que he adaptado la clase Timer del mismo y la struct Estadísticas a mi programa de testeo.

Saludos y gracias.
Título: [haddd] Timer Para Cálculo De 'frames Per Second'
Publicado por: fiero en 01 de Diciembre de 2004, 05:19:01 PM
 ¿Tienes configurado el refresco de tu monitor a 70 Hz y además utilizas la sincronización en tu device?

Si la respuesta es sí, prueba a desactivar la sincronización con el retrazo vertical utilizando:

D3DPRESENT_INTERVAL_IMMEDIATE en el campo PresentationInterval de la estructura D3DPRESENT_PARAMETERS cuando llamas a IDirect3D9::CreateDevice

un saludo
Título: [haddd] Timer Para Cálculo De 'frames Per Second'
Publicado por: Topper en 01 de Diciembre de 2004, 05:33:27 PM
 joder Fiero, me has pillao. Eres un FIERA, colega!  (ole)  
Título: [haddd] Timer Para Cálculo De 'frames Per Second'
Publicado por: Haddd en 01 de Diciembre de 2004, 06:43:36 PM
 aunque el motor se llame Haddd, no lo estoy haciendo yo solito, hay más gente implicada. De hecho, aunque el timer sí era algo mio, Berserker lo ha mejorado y modificado y en la nueva versión utilizamos el suyo.

Pero bueno, que me hace ilusión que alguien mire el motor para utilizar cosas de él. :P

Pronto una nueva versión... O_O  
Título: [haddd] Timer Para Cálculo De 'frames Per Second'
Publicado por: Topper en 01 de Diciembre de 2004, 06:55:36 PM
 Sí, ya sé que estáis varios coders con el motor, pero así llamaba tu atención en el Post  :P

Estuve utilizando en principio el que trae el FrameWork de DirectX para C# pero éste me parece más logrado. Good Job  ;)

Al fin he podido saber a cuántos 'fps' me rulaba el endemoniado algoritmo Geomipmapping que estoy codificando. Actualmente, con una textura, a unos 220 fps en ventana 1024*768 y con corrección de cracks (Ati Radeon 9200).  (twist)

Saludetes.
Título: [haddd] Timer Para Cálculo De 'frames Per Second'
Publicado por: Haddd en 01 de Diciembre de 2004, 07:38:21 PM
 ¿y porqué no añades tu código al motor ? No tenemos nada de terrenos y puede ser una aportación muy valiosa para ambas partes.
Título: [haddd] Timer Para Cálculo De 'frames Per Second'
Publicado por: Topper en 02 de Diciembre de 2004, 09:53:14 AM
 
Citar
¿y porqué no añades tu código al motor ? No tenemos nada de terrenos y puede ser una aportación muy valiosa para ambas partes.

Pues no me importaría. El caso es que estoy desarrollándolo para la empresa en la que trabajo y no puedo publicar código  :ph34r:

De todos modos, si decidís desarrollar sobre el tema de terrenos con Geomipmaps y os puedo echar una mano con posibles optimizaciones o desarrollo del algoritmo, no habría problema. Astat, otro miembro del foro, al parecer también ha desarrollado sobre este tema. Quizá él también os pueda aconsejar como lo hizo conmigo.

Saludos,