Lo de usar asm en los senos y cosenos es mas viejo que el cagar y la verdad, no
creo q vaya a umentar el rendimiento del war como para andar perdiendo el
tiempo, yo antes quitaría todos los glVertex3f y pondría unos vertex array como
mínimo antes de hacer nada en el apartado de optimizaciones.
Con respecto a lo del puntero a función, no olvides que usa c++, que es un
lenguaje de verdad y por lo tanto puedes usar abstracción sin ningún tipo de
problemas evitando tener que guarrear el código con punteros a funciones...
Además en el caso de hacer un fade en los cambios de pantalla ya no podrías usar
el mecanismo de cambiar el callback de GLUT.
Lo del sonido que dices tiene buena pinta.
un saludo, ethernet
> De:: "jgpd16" <
jgpd16@...>
> Para:
war_3d@yahoogroups.com
> Asunto:: [war_3d] Pequeña mejora en seno coseno y mas comentarios
> BCC: 07/09/2004
> Como supongo que muchos sabreis la fpu tiene la posibilidad de
> realizar el seno y el coseno de un angulo dado al mismo tiempo,
> ahorrando muchisimos ciclos de reloj(casi la mitad del tiempo).
> Para las funciones que usan sin y cos,matrices,etc he desarrollado
> (todavia sigo)una libreria matematica (esta casi toda en asm, y es
> rapidisima, el problema es que es VC inline) y bueno se me ha
> ocurrido poner la funcion sincos en asm inline de VC,
>
> void sincos(float val,float *sine,float *cosine)
> {
> _asm
> {
> mov eax,cosine
> mov edx,sine
> fld val
> fwait
> fsincos
> fwait
> fstp [eax]
> fstp [edx]
> }
> }
>
> Bueno eso para VC, para Gas que es que usa gcc seria algo distinto
> por motivos de la sintaxis AT&L que usa(que fea coño), asi la
> funcion quedaria algo parecido al
>
> void sincos(float val,float *sine,float *cosine)
> {
> #ifndef WIN32
>
> _asm
> {
> mov eax,cosine
> mov edx,sine
> fld val
> fwait
> fsincos
> fwait
> fstp [eax]
> fstp [edx]
> }
> #elseif defined /*pondriamos otras macros que definen los
> compiladores */
> /*Codigo en asm en linea*/
> #endif
> }
>
>
> Tendriamos una funcion que se llamaria de la siguiente forma
>
> sincos(angulo,&seno,&coseno);
>
> y nos devolveria el seno y el coseno del angulo y ademas es muy
> rapida.
>
> Estaria bien tratar de optimizar alguna que otra funcion matematica,
> tambien (no se si lo hareis así ahora mismo) para pintar la pantalla
> usar punteros a funciones, así se ahorrarian comprobaciones if
> inutiles que son tan importantes a la hora de pintar
> asi el GlutDisplayloquesea(no manejo glut, wgl y glx :P mira que soy
> raro) tendriamos por ejemplo un puntero a funcion generico
> void (*PintaPantalla)(void);
> Y según el estado del juego hariamos algo parecido a
> PintaPantalla = PintaMenu;
> PintaPantalla = PintaSinglePlayer;
> etc.
> y la llamada en glut seria algo como
> glutDisplayWindow(PintaPantalla);(Repito no se glut, no me gusta).
>
> Digo esto pq no me deja descargar el codigo anonimamente y no le he
> pasao a Zeru mi nombre de Sourceforge y no he podio ver el codigo de
> forma comoda.
>
> Otra cuestion, para el sonido usais ogg y openal, pero ¿cargais el
> fichero de audio entero en memoria y lo leeis?, ¿lo leeis desde el
> disco duro poco a poco o cargais el fichero ogg y despues lo que
> haceis es ir encolando bufferes de sonido para su reproduccion?,
> (como consecuencia se usa muy poca memoria y es muy rapido)(el
> fichero ogg, no mas de 3MG y dos bufferes de como mucho 8KB cada
> uno). Es que tengo hecho un reproductor de Ogg con OpenAl que usa
> eso, si os interesa y no teneis algo por el estilo podria pasarlo,
> de hecho tengo intencion en usarlo en un juego que estoy haciendo
> por mi cuenta(ya tengo casi terminado el editor :), por ciero la
> funcion sincos esta mas que provada en el editor para las
> rotaciones).
>
> Cuando tenga el codigo le hechare un ojillo por encima a ver que
> puedo aportar, que llevo un tiempo en el grupo y no he hecho na,
> bueno si compilarlo en suse pero soy tan perro que no escribi ni
> como lo hice.
>
> Por cierto mi cuenta en sourceforge en Raistmaj asi que ya sabes
> Zeru :). Si quereis comentarme algo personalmente mi correo:
> gmail.com 1
> @ 2
> Raistmaj 3
>
> El orden (es logico) es 321.(esto lo hago por si acaso hay spam).
>
>
>
>
>
> _____________________________________
> WAR3D -> <A HREF="
http://war3d.sourceforge.net/"
TARGET="_blank">
http://war3d.sourceforge.net/</A>
>
> Si quieres cancelar tu suscripcion, envia un mensaje a
war_3d-unsubscribe@yahoogroups.com
> _____________________________________
> Enlaces a Yahoo! Grupos
>
>
>
war_3d-unsubscribe@yahoogroups.com
>
> <A HREF="
http://es.docs.yahoo.com/info/utos.html"
TARGET="_blank">
http://es.docs.yahoo.com/info/utos.html</A>