domingo, 25 de mayo de 2008

Dividiendo la aplicación en ventanas

Buenas, en esta entrada vamos a empezar a explicar la forma de implementar nuestra aplicación Irrlicht de modo que podamos dividirla en varias zonas o ventanas, en nuestro caso, un menú principal, el editor y el simulador.


Una forma de hacerlo sería instanciando y cerrando el IrrlichtDevice *device para "pasar" de una ventana a otra, pero no quedaría nada bien. Sería como si las aplicaciones de ventana habituales se cerraran y abrieran en vez de cambiar su contenido. Así que es precisamente eso lo que haremos, cambiar el contenido de la ventana principal.

En Irrlicht la "ventana" es un objeto de tipo IrrlichtDevice. Lo creamos invocando al metodo createDevice(). Una vez lo tengamos creado podemos modificar sus propiedades para agregar controles, cámaras, eventos, comportamiento, etc. A continuación vemos un ejemplo de inicialización del device de Irrlicht.

        dimension2d<s32> resolucion(640,480);
bool fullScreen = false;
u32 bpp = 32;
f_device = createDevice(video::EDT_OPENGL, resolucion,bpp,fullScreen);
if (f_device == NULL) return false;
return true;


La estrategia consiste en instanciar un IrrlichtDevice y encapsular en una clase todos los elementos necesarios para administrar los controles, sus eventos, bucle de ejecución, etc. A priori ya nos podemos imaginar que nuestra clase aplicación recibirá por el constructor el device ya instanciado como en el ejemplo siguiente.

    mainApp = new MainApplication(f_device);
mainApp->mRun();


En la proxima entrega veremos, antes de entrar en detalle con la clase de aplicación, cómo gestionar la tasa de frames por segundo.

No hay comentarios: