Tutorial 1.HelloWorld | + +
+ This Tutorial shows how to set up the IDE for using the
+ Irrlicht Engine and how to write a simple HelloWorld program
+ with it. The program will show how to use the basics of
+ the VideoDriver, the GUIEnvironment and the SceneManager.
|
+
+
Lets start! | +|||||||||||||||
+
+
+
+
+
+
+ After we have set up the IDE, the compiler will know + where to find the Irrlicht Engine header files so + we can include it now into our code. +
In the Irrlicht Engine, everything can be found in + the namespace 'irr'. So if you want to use a class + of the engine, you'll have to type an irr:: before + the name of the class. For example, to use the IrrlichtDevice, + write: irr::IrrlichtDevice. To avoid having to put + irr:: before of the name of every class, we tell the + compiler that we use that namespace. +
There are 5 sub-namespaces in the Irrlicht Engine. + Take a look at them: you can read a detailed description + of them in the documentation by clicking on the top + menu item 'Namespace + List'. To keep this example simple, we don't want + to have to specify the name spaces, Hence: +
To be able to use the Irrlicht.DLL file, we need + to link with the Irrlicht.lib. We could set this option + in the project settings, but to make it easy we use + a pragma comment: +
Now the main method: to keep this example simple + we use int main(), which can be used on any platform. + However, on Windows platforms, we could also use the + WinMain method if we would want to get rid of the + console window which pops up when starting a program + with main(). +
The most important function of the engine is the + 'createDevice' function. The Irrlicht Device, which + is the root object for doing everything with the engine, + can be created with it. createDevice() has 7 parameters: +
Now we set the caption of the window to some nice text. + Note that there is a 'L' in front of the string: the + Irrlicht Engine uses wide character strings when displaying + text. +
Now we store a pointer to the video driver, the SceneManager, + and the graphical user interface environment so that + we do not always have to write device->getVideoDriver(), + device->getSceneManager(), and device->getGUIEnvironment(). +
We add a hello world label to the window using the + GUI environment. The text is placed at the position + (10,10) as top left corner and (200,22) as lower right + corner. +
To display something interesting, we load a Quake 2
+ model and display it. We only have to get the Mesh from
+ the Scene Manager with getMesh() and add a SceneNode
+ to display the mesh with addAnimatedMeshSceneNode().
+ Instead of loading a Quake2 file (.md2), it is also
+ possible to load a Maya object file (.obj), a complete
+ Quake3 map (.bsp), or a Milshape file (.ms3d).
To make the mesh look a little bit nicer, we change + its material a little bit: we disable lighting because + we do not have a dynamic light in here and the mesh + would be totally black. Then we set the frame loop so + that the animation is looped between the frames 0 and + 310. Then, at last, we apply a texture to the mesh. + Without it the mesh would be drawn using only a solid + color. +
To look at the mesh, we place a camera into 3d space + at the position (0, 10, -40). The camera looks from + there to (0,5,0). +
Ok. Now that we have set up the scene, let's draw everything: + we run the device in a while() loop until the device + does not want to run any more. This would be when the + user closes the window or presses ALT+F4 in Windows. +
Everything must be drawn between a beginScene() and + an endScene() call. The beginScene clears the screen + with a color and also the depth buffer, if desired. + Then we let the Scene Manager and the GUI environment + draw their content. With the endScene() call, everything + is presented on the screen. +
After we are finished, we have to delete the Irrlicht + Device created earlier with createDevice(). With the + Irrlicht Engine, you should delete all objects you created + with a method or function that starts with 'create'. + The object is deleted simply by calling ->drop(). + See the documentation + for more information. +
That's it. Compile and run. ++ |
+
Possible Errors + or Problems | +|||||
+
+
+
+
+ Visual Studio
Solution: You may have set the include directory improperly + in the Visual Studio options. See above + for information on setting it. + +
Solution: You may have set the library directory improperly.
+ See above for information on
+ setting it. Compiler independent problems
Solution: You may have forgotten to copy the Irrlicht.dll + file from Irrlicht\bin\VisualStudio to the directory + the tutorial's project file is in. + If the tutorial compiles and runs successfully but produces + errors in the console like:+ +
Or: +
Solution: The file listed in the error message cannot
+ be found. Ensure that the directory specified in the
+ main.cpp exists and is where the file is located. |
+
+ + -- cgit v1.1