Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





FPS estables

Iniciado por ethernet, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

ethernet

                                ahora calculo los fps de la siguiente forma:


while(bQuit){



         t2=fps.GetTime();

  sprintf(Title,"fps: %lf",1.0/(t2-1));

  t1=t2;

  SetWindowText(hWnd,Title);

     

     if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){

   if (msg.message == WM_QUIT){

                  bQuit = TRUE;

   }

          else{

             TranslateMessage(&msg);

             DispatchMessage(&msg);

          }



     }

     Draw(hDC);  

         

     

 }


donde fps es un contador simple(usa QueryPerformanceCounter). Pero la cifra de fps varia mucho, no se queda estable.
Saludos

[EDIT: no hay ninguna manera de poner codigo como en flipcode?]


[ Este Mensaje fue editado por: ethernet el 2002-08-06 04:18 ]

[ Este Mensaje fue editado por: ethernet el 2002-08-06 04:21 ]                                

Drácula

                                Es que tu no cuentas cuantos frames llevas!!

Mira, este es mi código:

      float fTime = Merlin.m_Timer.TiempoAbsoluto();

      m_TiempoActual=fTime;

      if(m_TiempoAnterior==0) m_TiempoAnterior= fTime;

      m_Frames++;

      // Actualizamos una vez por segundo
      if( fTime - m_TiempoAnterior > 1.0f ) {

         m_FPS    = m_Frames / (fTime - m_TiempoAnterior);
         m_TiempoAnterior = fTime;
         m_Frames  = 0L;
                               
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

ethernet

                                si, se me ocurrio ayer una solucion muy similar a la tuya :


#define REFRESH 0.5

void FrameRate(HWND wnd){

static CTimer Tfps;

static unsigned int fps;

char p[32];

static double t1,t2;

t2=Tfps.GetTime();

fps++;

if(t2-t1>=REFRESH){

 t1=t2;

 sprintf(p,"fps: %f",(float)(fps/REFRESH));

 SetWindowText(wnd,p);

 fps=0;

}

}


Muchas gracias :ojo:
                               

NeLo

                                Yo me he dado cuenta en mis experiencias que con OpenGL me da unos FPS más o menos constantes, y con Direct3D son más variables. ¿?
                               
Drowning deep in my sea of loathing

Tei

                                mas inestables?
quizas el "peso" de cada funcion varie mucho, y
cosas que creas se hacen por tarjeta se hacen en modo soft por el driver, decelerando o acelerando la ejecucion segun si a DX le toca hacer algo de esto. Mientras que OpenGL es mas "ensambladoriano" y todas las instrucciones son "sencillas". OpenGL es un ventilador de pologonos :riendo:, lo juro.                                

NeLo

                                ¿?
                               
Drowning deep in my sea of loathing

Cronodragón

                                ¿Ventilador de polígonos? Yo también: ¿ ? :riendo:                                

jpastor

                                Nunca viene mal ventilarlos ahora en verano con el calor que hace :riendo:

¿o te refieres a algo sexual? :lengua:                                

samsaga2

                                Puedes decir lo que quieras pero es mucho mas moderno un aire acondicionador de poligonos que uno ventilador. :jaja:                                

Lord Trancos

                                Ahora en veranito lo mejor pa refrescar es un granizado de poligonos :sonriendo: Y cuando hace frio, la sopita de poligonos de toda la vida :riendo:
                               
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.