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.






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.