Tutorial de Introducción


external image dl1773En este tutorial aprenderás a como aumentar la velocidad del tiempo de compilación de la aplicación hecha en Ogre en Visual Studio, usando cabeceras precompiladas.



Prerrequisitos


  • Este tutorial asume que tienes conocimientos sobre programación en C++ y eres capaz de configurar e instalar una aplicación Ogre. Mira Creando una Aplicación para más instrucciones.


Introducción


Construyendo una simple aplicación de Ogre con "Hola mundo" en sólo unos pocos segundos en una máquina moderna. Incluso cuando no has añadido tu código todavía.
Esto hace perder el tiempo

  • rupturas del flujo
  • hace la experimentacion dificil
  • es innecesario


La solución: usar cabeceras precompiladas en Visual Studio.
En una media de ordenadores de escritorio (WinXP, VC++2008 express, Core2Duo 1.5GHz, 2GB RAM) el tiempo de compilación para el Tutorial Básico 1 de Ogre tarda 20 segundos, y un segundo con cabeceras precompiladas. Asi que es 20 veces más rápido!



external image dl1943&display&scale=0.6

¿Qué son las cabeceras precompiladas?


No explicaremos aquí que son exactamente las cabeceras precompiladas hay mejores sitios en la red.

Sólo hay que saber que las cabeceras precompiladas son muy útiles cuando tu proyecto tiene muchos includes que procesar. Este es el caso de Ogre. Le dices a Visual Studio que las cabeceras incluidas cambian rara vez o nunca, entonces Visual Studio las precompila una vez, y las salvará en un archivo en la carpeta del proyecto, con un archivo de extensión de .pch (adivina porque), y usará esta salida temporal cada vez que tu proyecto compile.

No habrá beneficio cuando las cabeceras son precompiladas, y es la primera vez que compilas el proyecto, o cuando alguna de las cabeceras precompiladas haya cambiado (lo que debería ser raro o nunca ocurrir), pero para el resto de compilaciones la ganancia es sustancial.

La buena cosa es que, si una de estas cabeceras que hemos precompilado cambia, Visual Studio recreará el archivo .pch automáticamente para ti. Así que una vez instalemos las cabeceras precompiladas no tendremos que ocuparnos de ellas.

Como instalar cabeceras precompiladas


Establecer la cabeceras precompiladas es sencillo y toma sólo unos pocos pasos, especialmente si estás sólo comenzando un nuevo proyecto.

Crea stdafx.h


stdafx.h es el archivo de cabecera donde has incluido todas estas cabeceras las que necesitarás en tu proyecto y que rara vez o nunca cambiarán. Esto podrían ser las cabeceras de Ogre, o cualquier otra cosa que quieras. El nombre de este archivo de cabecera no importa, pero por convención lo llamaremos stdafx.h


stdafx.h
Las cabeceras de Ogre que necesitas
#include <OgreException.h>
#include <OgreRoot.h>
#include <OgreConfigFile.h>
#include <OgreCamera.h>
#include <OgreViewport.h>
#include <OgreSceneManager.h>
#include <OgreRenderWindow.h>
#include <OgreEntity.h>
#include <OgreWindowEventUtilities.h>
// Cualquier otra cabecera puede ser incluida, como es normal
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
#define WIN32_LEAN_AND_MEAN
#include "windows.h"
#endif


Crea stdafx.cpp


Entonces, necesitas asociar el archivo .cpp
Crea stdafxcpp en tu proyecto. De nuevo el nombre podría ser cualquiera, pero es siempre mejor seguir las convenciones.
Puedes poner todo lo que quieras en tu stdafx.cpp, pero el único requisito es incluir stdafx.h como su primera sentencia.



stdafx.cpp
#include "stdafx.h"

Todo lo que quieras después de esto


Incluye stdafx.h en cada archivo de tu proyecto


Incluye stdafx.h

  • como la primera sentencia
  • en TODOS los archivos .h y .cpp


Con proyectos grandes donde tienes cientos de archivos, usa algunos scripts, por ejemplo Python, para asegúrate de que se hace automáticamente.


Configurando Visual Studio para usar las cabeceras precompiladas


Ve a los ajustes de tu proyecto, asegúrate de seleccionar "Todas las Configuraciones", entonces ve a las Propiedades de Configuración -> C/C++ -> Cabeceras Precompiladas, y elige "Usar Cabeceras Precompiladas".
Asegúrate de que stdafx.h es el archivo de cabecera que será usado, y deja el resto de valores a por defecto.

external image dl1944&display&scale=0.75


Así ahora, Visual Studio intentará usar cabeceras precompiladas la próxima vez que compiles tu proyecto. Pero no funcionará, ya que no tenemos cabeceras precompiladas (el archivo .pch) todavía. Así que le decimos a Visual Studio como crearlas para nosotros.

Configura Visual Studio para crear las cabeceras precompiladas


Finalmente, en el explorador de soluciones, pulsa el botón derecho del ratón en stdafx.cpp -> Propiedades elige "Todas las Configuraciones",
entonces ve a las Cabeceras Precompiladas de C/C++, elige "Crear Cabecera Precompilada", asegúrate de que stdafx.h es el archivo de cabecera usado, y deja el resto de valores a por defecto.

Pulsa en "OK".

Tenemos sólo que decirle a Visual Studio que cree la cabecera precompilada cuando estamos compilando stdafx.cpp. La cabecera precompilada será (re)creada en la siguiente compilación:

  • si no existe todavía
  • cuando una de las cabeceras a precompilar haya sido modificada
  • cuando stdafx.cpp haya sido modificado

Conclusión


Recompilar tu proyecto. No deberías notar ninguna diferencia ya que la cabecera precompilada es la primera generada. Debería ser incluso más lento de lo habitual.
Así que intenta hacer un pequeño cambio a tus archivos fuentes (por ejemplo añade un espacio o un punto y coma en la función main), y compila otra vez:
disfruta de la ganancia de rendimiento!