Not quite
The Load Screen at the very beginning uses this code.
Code: Select all
while(IrrDevice->run() && IrrDriver)
{
// Wir wollen nur was rendern wenn das Fenster aktiv ist
if (IrrDevice->isWindowActive())
{
// Später wichtig für Zeitmessung, eher irrelevant im Intro aber wir sind ja Perfektionisten
DWORD dwRenderTime;
dwRenderTime = GetTickCount();
// Wer will schon den Mauszeiger sehen?
IrrDevice->getCursorControl()->setVisible(false);
// Lasset die Scene beginnen
IrrDriver->beginScene(true, true, irr::video::SColor(0,0,0,0));
// Laden wir das Hintergrundbild
IrrDriver->draw2DImage(tBackground, irr::core::position2d<irr::s32>(g_iXOffsetSplash,0),
irr::core::rect<irr::s32>(0,0,512,512),
NULL , irr::video::SColor(255,255,255,255), true);
// Lassen wir etwas transparentes um den Cursour entstehen
irr::core::position2d<irr::s32> m = IrrDevice->getCursorControl()->getPosition();
IrrDriver->draw2DImage(tCursor, irr::core::position2d<irr::s32>(m.X - 2, m.Y - 2),
irr::core::rect<irr::s32>(0,0,64,64),
NULL , irr::video::SColor(255,255,255,255), true );
// Zeit in ms vergangen
dwRenderTime = GetTickCount() - dwRenderTime;
// Für diese Zeit CPU an andere Anwendungen abgeben
if(dwRenderTime < 33)
{
Sleep(33 - dwRenderTime);
}
// Und da ist die Szene rum *g*
IrrDriver->endScene();
// Für Abbruchance sorgen
if(IsKeyDown(VK_SPACE))
{
// Schleife beendet, aber müssen wir das Spielfeld anpassen?
if(Config.iFullscreen == false)
{
// Fenster resize
}
// Wir haben geladen -> Gamestate Play
return (GAMESTATE_PLAY);
break;
}
}
}
Edit:
Trouble is it sucks MORE CPU if in Background ... [...]
Endless Loop? Seeeecond ^^
...
OUCH!
Yes, when the window was not active I have created in infinite loop ...