Irrlicht - from Noob to Pro: Beispielcode2
Erscheinungsbild
//Einbinden der Header-Datei von Irrlicht
#include <irrlicht.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"Ein Dreieck darstellen mit Irrlicht !");
//Den Videotreiber erstellen und Zeiger aus dem Device abholen
IVideoDriver* driver = device->getVideoDriver();
//Ein Material deklarieren
video::SMaterial material;
//Das Material nimmt kein Licht an
material.Lighting = false;
//Das Material soll voll gezeichnet werden
material.Wireframe = false;
//Während das Device aktiv ist ...
while(device->run())
{
//Szene beginnen
driver->beginScene(true, true, SColor(3,150,203,255));
//Material festlegen
driver->setMaterial(material);
//Position des Dreiecks auf der Z-Achse (="Tiefenachse")
const irr::f32 z = 1.0f;
//Definieren der Vertices
video::S3DVertex vaVertices[3]; //Das Array vom Typ S3DVertex
//Punkt A
vaVertices[0].Pos.X = -0.5f; //X
vaVertices[0].Pos.Y = -0.3f; //Y
vaVertices[0].Pos.Z = z; //Z
vaVertices[0].Color = video::SColor(255,255,0,0); //Rot
//Punkt B
vaVertices[1].Pos.X = 0.5f; //X
vaVertices[1].Pos.Y = -0.3f; //Y
vaVertices[1].Pos.Z = z; //Z
vaVertices[1].Color = video::SColor(255,0,255,0); //Grün
//Punkt C
vaVertices[2].Pos.X = 0.0f; //X
vaVertices[2].Pos.Y = 0.5f; //Y
vaVertices[2].Pos.Z = z; //Z
vaVertices[2].Color = video::SColor(255,0,0,255); //Blau
//Definieren der Indicies
u16 uiIndicies[3] = {2, //Punkt C
1, //Punkt B
0}; //Punkt A
//Zeichnen des Dreiecks
driver->drawIndexedTriangleList(
&vaVertices[0], //Zeiger auf das erste Element im Vertices-Array
3, //Anzahl der Elemente im Vertices-Array
&uiIndicies[0], //Zeiger auf das erste Element in Indicies-Array
1); //Anzahl der zu zeichnenden Dreiecke
//Szene beenden
driver->endScene();
}
//Das Device freigeben
device->drop();
//Keinen Fehler zurückgeben
return 0;
}
|