Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: tiutiu en 11 de Agosto de 2003, 07:08:31 PM

Título: Como Chupan Las Matrices Y Vectores!
Publicado por: tiutiu en 11 de Agosto de 2003, 07:08:31 PM
 Pues eso, q me chupan un huevo... de fps las jodias. He visto q me baja de 999fps (el maximo del fraps) a 450fps con solo llamar a una funcion. La funcion es la q calcula la transformacion en world coordinates, q lo unico q hace es esto:

void WorldObject::UpdateWorldData(float fDeltaTime)
{
   if ( m_pkParent )
   {
       m_fWorldScale = m_pkParent->m_fWorldScale*m_fScale;
       m_kWorldRotate = m_pkParent->m_kWorldRotate*m_kRotate;
       m_kWorldTranslate = m_pkParent->m_kWorldTranslate +
           m_pkParent->m_fWorldScale*(m_pkParent->m_kWorldRotate *
           m_kTranslate);
   }
   else
   {
       m_fWorldScale = m_fScale;
       m_kWorldRotate = m_kRotate;
       m_kWorldTranslate = m_kTranslate;
   }
}

el scale es un float, rotate una matrix3 y translate un vector. Es muy raro pq las funciones d multiplicar matrices y vectores y todo eso las he cogido de un engine q vi. Lo unico q hice fue meter las clases d matriz, vector, etc... en un .lib y ademas las hice inline y todo pa q sea mas rapido. La funcion esta se llama cada frame. Es demasiado tiempo el q consume, se me hace raro... Alguna sugerencia? puede ser q al estar en un .lib no las haga inline y eso chupe tanto? no se, en estas cosas no controlo
Título: Como Chupan Las Matrices Y Vectores!
Publicado por: Zaelsius en 11 de Agosto de 2003, 07:20:42 PM
 El hecho de que estén en un .lib no impide que se hagan "inline", segun tengo entendido. Tb debes recordar que el pasar de 1000fps a 500fps no significa que tus rutinas de vectores ocupen el 50% del tiempo proceso...  La pérdida de fps yo lo veo algo normal, no se. ¿Llamas a la funcion una vez por objeto? ¿Cuantos objetos tienes en pantalla?

Creo que no deberias preocuparte hasta que baje de 40 fps ;-), o no usar los FPS como medida para medir el rendimiento de tus rutinas. Utiliza algun depurador tipo Purify o DevPartner Studio para hacer un profiling más realista. Si eres linuxero, usa gprof.