Irrlicht - from Noob to Pro: Beispielcode4
Erscheinungsbild
//Einbinden der Header-Datei von Irrlicht
#include <irrlicht.h>
//Einbinden der Header-Datei unserer Würfel-Klasse
#include "CWuerfel.h"
//Einbinden der Namespaces
using namespace irr;
using namespace core;
using namespace video;
//Die Hauptprozedur main()
int main()
{
//Unser Irrlicht-Device erstellen und initialisieren
IrrlichtDevice *device =
createDevice( video::EDT_OPENGL, dimension2d<u32>(640, 480), 32,
false, false, false, 0);
//Konnte das Device erstellt werden ?
if (!device)
return 1; //Falls nicht, Fehlercode zurückgeben und Programm abbrechen
//Den Text des Hauptfensters festlegen
device->setWindowCaption(L"Einen Würfel-Klasse in Irrlicht !");
//Den Videotreiber erstellen und Zeiger aus dem Device abholen
IVideoDriver* driver = device->getVideoDriver();
//Einen Szene-Manager erstellen und Zeiger aus dem Device abholen
scene::ISceneManager* smgr = device->getSceneManager();
//Einen GUI_Manager erstellen und Zeiger aus dem Device abholen
gui::IGUIEnvironment* guienv = device->getGUIEnvironment();
//Ein Text-Element definieren und an den GUI-Manager übergeben
gui::IGUIStaticText* GUI_debug_text = guienv->addStaticText
(L"",rect<s32>(5, 5, 200, 200),false,true,0,-1,false);
//Eine Kamera erstellen
smgr->addCameraSceneNode(0, core::vector3df(0,-2,0), core::vector3df(0,0,0));
//Einen Würfel der Klasse CWuerfel erstellen
CWuerfel *Wuerfel = new CWuerfel(smgr->getRootSceneNode(), smgr, 1);
//Nach welcher Zeit(ms) soll die Szene gedreht werden ?
Wuerfel->SetDeltaTime(50); //50 Millisekunden
//Letzte Zeitmessung initalisieren
Wuerfel->SetTimePos(device->getTimer()->getTime());
//Größe des Würfels verändern
//Wuerfel->SetSize(1.0f, 0.6f, 1.3f);
//Während das Device aktiv ist ...
while(device->run())
{
//Szene beginnen
driver->beginScene(true, true, SColor(3,150,203,255));
//Den Debug-String erstellen und abholen
stringw sDebStr = Wuerfel->GetDebugString();
//Den Debug-String in der Irrlicht-GUI anzeigen
GUI_debug_text->setText(sDebStr.c_str());
//Aktuelle Zeit mitteilen
Wuerfel->TellCurrentTime(device->getTimer()->getTime());
//Nach Ablauf der Zeitspanne den Würfel drehen
Wuerfel->TurnIfDesired();
//Dem Szenemanager sagen, dass er alle Nodes zeichnen soll
smgr->drawAll();
//Dem GUI-Manager sagen, dass er alle GUIs zeichnen soll
guienv->drawAll();
//Szene beenden
driver->endScene();
}
//Das Device freigeben
device->drop();
//Keinen Fehler zurückgeben
return 0;
}
|