IrrLicht Engine

H IrrLicht Engine είναι μια engine 3d γραφικών , είναι open source και έχει γραφτεί αποκλιστικά σε C++.
To κυριότερο είναι open source και cross platform :). Υποστηρίζει
και απο πλατφόρμες.. χαχα τι να πρωτογράψω :) :
Υποστηρίζει επίσης textures όπως:
και mesh αρχεία όπως:
Και αφού σας έδειξα τις ιδιότητες της IrrLicht, ώρα για ένα απλό παράδειγμα hello world!
στην περίπτωση μου ,γράφω με visual c++ 2005 ,
αλλά μπορείτε να γράψετε και εσείς με την IrrLicht χρισιμοποιώντας ό,τι IDE προτιμάτε,
αρκει να το ρυθμίσετε να δουλεύει με την IrrLicht.
Ηello World! παράδειγμα:
//αρχικά κάνουμε include την IrrLicht.
#include <irrlicht.h>
Η IrrLicht έχει 5name spaces.
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
αλλά με ένα μόνο namespace περιλαμβάνουμε στο πρόγραμμα τα υπόλοιπα 5.
//to namespace pou perilamvanei ola ta alla 5
using namespace irr;
linking στην library της IrrLicht.
#pragma comment(lib, "Irrlicht.lib")
αρχή
int main()
{
τώρα, για να δημιουργήσουμε την engine χρησιμοποιούμε την μέθοδο 'createDevice()' η οποία έχει 7παράμετρους:
στο παράδειγμα θα χρησιμοποιήσω Direct3D 9, δηλαδή θα το δηλώσω με EDT_DIRECT3D, μπορείτε να χρησιμοποιήσετε ό,τι άλλο θέλετε π.χ
EDT_SOFTWARE, EDT_NULL, EDT_DIRECT3D9, EDT_DIRECT3D8, EDT_OPENGL.
γράφουμε το όνομα που θέλουμε να έχει το παράθυρο μας π.χ:
device->setWindowCaption(L"Hello World! - Irrlicht Engine Demo");
καλούμε το video driver, scene manager και το gui enviroment
IVideoDriver* driver = device->getVideoDriver();
ISceneManager* smgr = device->getSceneManager();
IGUIEnvironment* guienv = device->getGUIEnvironment();
βάζουμε κείμενο στο στην πάνο αριστερή γωνία του προγράμματος και στην κάτω δεξιά.
guienv->addStaticText(L"Hello World! This is the Irrlicht Software engine!",
rect<int>(10,10,200,22), true);
τώρα φορτώνουμε κάτι ενδιαφέρον στο πρόγραμμα, π.χ ένα αρχείο mesh Quake 2 (.md2)
IAnimatedMesh* mesh = smgr->getMesh("../../media/sydney.md2");
IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh );
τώρα βάζουμε την παράμετρο του φώς σε false γιατί δεν έχουμε δυναμικό φώς στην σκηνή και το mesh αρχείο θα φένετε τελείως μαύρο.
βάζουμε επείσης το animation να τρέχει 0-310 fps.
και τελικά φορτώνουμε το texture του.
if (node)
{
node->setMaterialFlag(EMF_LIGHTING, false);
node->setFrameLoop(0, 310);
node->setMaterialTexture( 0, driver->getTexture("../../media/sydney.bmp") );
}
τώρα για να βλέπουμε την σκηνή βάζουμε μια κάμερα στη θέση (0, 10, -40).
smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0));
ok τώρα που τα σετάραμε όλα ας τα εμφανίσουμε στην οθόνη!
while(device->run())
{
driver->beginScene(true, true, SColor(255,100,101,140));
smgr->drawAll();
guienv->drawAll();
driver->endScene();
}
και τέλος κλείνουμε το πρόγραμμα ρίχνοντας την μηχανή για έξοδο.
device->drop();
return 0;
}
.
Eλπίζω το άρθρο να σας φανεί ενδιαφέρον αν όχι εκπαιδευτικό :P.Ξεκίνησα να δουλεύω με την ΙrrLicht πριν λίγες μέρες, αφότου πείρα ένα mail που με ήθελε κάποιος να μπώ στο project του για ένα 3D παιχνίδι...
και τα λίγα πράγματα που ξέρω έγω πάνω στην IrrLicht