Home | Namespaces | Hierarchy | Alphabetical List | Class list | Files | Namespace Members | Class members | File members | Tutorials

# Irrlicht Engine 1.6.1 API documentation

## Introduction

Welcome to the Irrlicht Engine API documentation. Here you'll find any information you'll need to develop applications with the Irrlicht Engine. If you are looking for a tutorial on how to start, you'll find some on the homepage of the Irrlicht Engine at irrlicht.sourceforge.net or inside the SDK in the examples directory.

The Irrlicht Engine is intended to be an easy-to-use 3d engine, so this documentation is an important part of it. If you have any questions or suggestions, just send a email to the author of the engine, Nikolaus Gebhardt (niko (at) irrlicht3d.org).

## Links

Namespaces: A very good place to start reading the documentation.
Class list: List of all classes with descriptions.
Class members: Good place to find forgotten features.

## Short example

A simple application, starting up the engine, loading a Quake 2 animated model file and the corresponding texture, animating and displaying it in front of a blue background and placing a user controlable 3d camera would look like the following code. I think this example shows the usage of the engine quite well:

     #include <irrlicht.h>
     using namespace irr;

     int main()
     {
            // start up the engine
            IrrlichtDevice *device = createDevice(video::EDT_DIRECT3D8,
                    core::dimension2d<u32>(640,480));

            video::IVideoDriver* driver = device->getVideoDriver();
            scene::ISceneManager* scenemgr = device->getSceneManager();

            device->setWindowCaption(L"Hello World!");

            // load and show quake2 .md2 model
            scene::ISceneNode* node = scenemgr->addAnimatedMeshSceneNode(
                    scenemgr->getMesh("quake2model.md2"));

            // if everything worked, add a texture and disable lighting
            if (node)
            {
                    node->setMaterialTexture(0, driver->getTexture("texture.bmp"));
                    node->setMaterialFlag(video::EMF_LIGHTING, false);
            }

            // add a first person shooter style user controlled camera
            scenemgr->addCameraSceneNodeFPS();

            // draw everything
            while(device->run() && driver)
            {
                    driver->beginScene(true, true, video::SColor(255,0,0,255));
                    scenemgr->drawAll();
                    driver->endScene();
            }

            // delete device
            device->drop();
            return 0;
     }

Irrlicht can load a lot of file formats automaticly, see irr::scene::ISceneManager::getMesh() for a detailed list. So if you would like to replace the simple blue screen background by a cool Quake 3 Map, optimized by an octtree, just insert this code somewhere before the while loop:

            // add .pk3 archive to the file system
            device->getFileSystem()->addZipFileArchive("quake3map.pk3");

            // load .bsp file and show it using an octtree
            scenemgr->addOctTreeSceneNode(
                    scenemgr->getMesh("quake3map.bsp"));

As you can see, the engine uses namespaces. Everything in the engine is placed into the namespace 'irr', but there are also 5 sub namespaces. You can find a list of all namespaces with descriptions at the namespaces page. This is also a good place to start reading the documentation. If you don't want to write the namespace names all the time, just use all namespaces like this:

     using namespace core;
     using namespace scene;
     using namespace video;
     using namespace io;
     using namespace gui;

There is a lot more the engine can do, but I hope this gave a short overview over the basic features of the engine. For more examples, please take a look into the examples directory of the SDK.

| The Irrlicht Engine Documentation © 2003-2009 by Nikolaus Gebhardt. Generated on Sun Jan 10 09:24:02 2010 by Doxygen (1.5.6)