SDL con cafeína #2: Metiendo mano a la POO

Permalink | Archivado en: Alma Geek, Desarrollo de videojuegos, Tutoriales

Tabla de contenidos:

Lee el tutorial en formato PDF (134 KB) y descarga los archivos de ejemplo (4 KB).

Capítulos anteriores:

  1. Instalación de las SDL
  2. Primer programa en SDL

6 comentarios »

  1. Arigatooooooo!!!!
    En cuanto termine los examenes le echare un vistazo (si me dejan en el curro :P ).
    Saca mas! Saca mas! Saca mas! xDDD

    Comentario de th1nk3r — 09-06-06 7:02 pm

  2. ¡Wow! ¡Alguien que se los lee! XD

    Comentario de BenKo — 09-06-06 7:08 pm

  3. Urgh, deberías evitar llamar a Manager::getManager() cada vez que necesites una referencia. Los compiladores de C++ modernos pueden detectar referencias a punteros repetidas y convertirlas a valores constantes, pero eso es solo para miembros variable.

    Ahí estas llamando 3 veces a una función con una comprobación de por medio que siempre falla, pero no es estáticamente optimizable. Si tienes la seguridad que tu manager es el mismo siempre, usa vars locales.

    No se podría hacer lo mismo con Screen(), ya que si cambias de resolución o modo de video, ese puntero cambia.

    “Optimization is the root of all evil … bla bla bla, sin embargo en los juegos el rendimiento es lo primero.

    Eso sí, te lo perdono si es por intención puramente didáctica :D .

    Comentario de Rawsock — 09-06-06 10:51 pm

  4. Había pensado en meter en una local el puntero a Manager (llamando sólo una vez a GetManager), pero por temas de rendimiento…

    Pero eso qué dices de que los compiladores modernos convierten las referencias repetidas a constantes no lo sabía O_O ¿Alguna web con más info?

    Ah, y gracias :P

    Comentario de BenKo — 10-06-06 10:40 am

  5. Desconozco el nombre de la técnica, pero consiste en
    transformar esto :

    foo_struct_p->bar_struct_p->baz_struct_p->x = 0.1;
    foo_struct_p->bar_struct_p->baz_struct_p->y = 0.1;

    La primera referencia se tiene que calcular obligatoriamente, pero muchos optimizadores modernos analizan que los punteros tienen la misma base común y hacen esto :


    Baz *tmp = foo_struct_p->bar_struct_p->baz_struct_p;
    tmp->x = 0.1;
    tmp->y = 0.3;

    Sin embargo, este tipo de optimizaciones requieren de un análisis exhaustivo del código y no funcionan siempre, por lo que no está de más ayudarles un poco :) .

    Comentario de Rawsock — 10-06-06 11:12 am

  6. Como ya le hice a BenKo los comentarios por Jabber, aprovechare para hacer un comentario al respecto de esto de la optimización.

    Ciertamente en juegos el rendimiento es lo primero, pero hay que darse cuenta que estamos en el 2006 y, ahora mismo, el cuello de botella esta en la “arquitectura”. Yo suelo convertir las referencias por un tema de comodidad, normalmente cuando usar muchos punteros sea incomodo es cuando puedes tener problemas de rendimiento. Las mejores optimizaciones no son las de hacer mejor codigo, sino las de hacer algoritmos mas inteligentes. (a menos que programes para una plataforma limitadita, pero hoy en dia todas tienen bastante potencia).

    Aun así, se puede optimizar, al final… y si hace falta

    Si quieres información, hay un buen capitulo en el libro Code Complete, casi seguro que en la biblioteca de la UA lo tienen…

    Comentario de FANatiko — 10-06-06 12:20 pm

Si quieres hacer un trackback, usa esta TrackBack URI

Escribe un comentario

Los párrafos y saltos de línea se ponen de forma automática. La dirección de e-mail no se mostrará nunca. Se permiten las siguientes etiquetas XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

(requerido)

(requerido)