domingo, 29 de marzo de 2015

Efecto Fade in y Fade out a la pantalla en Irrlicht


#include <irrlicht.h>

//los namespace para definir funciones de irrlicht
using namespace irr;
using namespace core;
using namespace video;

#if defined(_MSC_VER)
#pragma comment(lib, "Irrlicht.lib")
#endif

int main()
{
 //define un device para la pantalla
 IrrlichtDevice *device = createDevice(EDT_OPENGL, dimension2d<u32>(640, 480), 16, false,
  false, false, 0);

 if (!device)
  return 1;

 IVideoDriver *driver = device->getVideoDriver();

 //creo variables para mis colores
 f32 r = 255.0f;
 f32 g = 255.0f;
 f32 b = 255.0f;

 bool fadeOut = true;
 int lastFPS = -1;

 u32 then = device->getTimer()->getTime();
 const f32 fadeRate = 0.1f;

 //Gameloop
 while (device->run())
 {
  //manejo los tiempos
  const u32 now = device->getTimer()->getTime();
  const f32 frameDeltaTime = (f32)(now - then);
  then = now;

  if (r <= 0.0f)
   fadeOut = false;

  else if (r >= 255.0f)
   fadeOut = true;

  //Crea el efecto fadeout y fadein
  if (fadeOut)
  {
   r -= fadeRate * frameDeltaTime;
   g -= fadeRate * frameDeltaTime;
   b -= fadeRate * frameDeltaTime;
  }

  else
  {
   r += fadeRate * frameDeltaTime;
   g += fadeRate * frameDeltaTime;
   b += fadeRate * frameDeltaTime;
  }



  driver->beginScene(true, true, SColor(255, (u32)r, (u32)g, (u32)b));
  driver->endScene();
 }

 //cerrar device
 device->drop();

 return 0;
}

No hay comentarios:

Publicar un comentario