Introduction
This is where you should first start when learning Ogre. This tutorial series will explain the core elements of an Ogre scene starting from the very basics. The only requirement is an understanding of writing and compiling c++ programs. A basic knowledge of mathematics will also be very helpful, but is not necessary.
Every tutorial will begin with an introduction and a screenshot to demonstrate the final product. Each tutorial will also provide links to the completed source code.
Setup
Before you can begin this series, you have to set up a basic Ogre project. If you need help with this, then you can read Setting Up An Application. It has setup information for each OS, a number of different IDEs, and a section about building with cmake. It also has a section that covers the framework we will be using for the tutorial.
To start this series, you will need four files that can be downloaded here. Copy these files into your project (make sure to get the files that match your version/OS):
BaseApplication.h BaseApplication.cpp TutorialApplication.h TutorialApplication.cpp
Compile and run your application with these new files included. You should see the overlay displaying information about the rendering statistics. If you're still having trouble, then refer to the Troubleshooting section of Setting Up An Application.
Notes
When the tutorial shifts to a new method it will always be mentioned explicitly. For example, you will see: "Add the following to the beginning of createScene:" If a new code section is reached and nothing has been mentioned, then you can assume the code continues exactly where the last section left off. If you spot any cases where this isn't true, then please leave a comment or make the change yourself.
During these tutorials, when a block of code (i.e. something between brackets { }) is broken up over more than one code section, a ^ will be used as a reminder that the code is continuing an unfinished block. This should not be included in your project. It is soley for formatting.
An example:
if (skyIsBlue) { sunshineOnMyFace = true;
Later...
^ if (seeThunderCloud) { takeCover(); } }
These should be read as one single if statement.