Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Como Chupan Las Matrices Y Vectores!

Iniciado por tiutiu, 11 de Agosto de 2003, 07:08:31 PM

« anterior - próximo »

tiutiu

 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
b>:: Pandora's Box project ::
Notas e ideas sobre desarrollo de engines para juegos

Zaelsius

 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.






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.