Recent Changes - Search:



Staff Interface


edit SideBar

Logged in as:

ComputerGame2009 / ProgrammingTools

Tools Used In Class


All the programs you write in this class will be in C++. There are three main reasons for this:

  • The graphics toolkit for this class, OpenGL, is intended for use with C, which is a subset of C++.
  • The interface toolkit for this class, FLTK, is written in C++, and must be used with C++.
  • There is no good alternative to OpenGL that works with another language. Direct3D is an alternative, but it only works with C++ and Windows.

For the projects in this course, you will not require most of the advanced features of C++, such as operator overloading, exception handling and templates. Such things may make some aspects of your programs cleaner or easier to write, but are probably not worth the time investment to learn about just for this class. You will need to know about classes, inheritance and memory management (new and delete).

Your projects for this class must run under Visual C++ on the machines in room RB-504.


FLTK is a user interface toolkit that provides things like buttons and menus. Most important for us, it also provides simple support for OpenGL windows. The documentation for FLTK is available off the FLTK home page.


The source for LibTarga is available in tutorial session, should you wish to download it for home. You will need to build at least the debug multithreaded configuration (which may not be the default). Note also that the pathnames to get to the include files and libraries will be different than those used at school.

LibTarga was written by Alex Mohr.


The OpenGL libraries come with all recent incarnations of Windows. For UNIX based systems, machines intended for graphics generally have hardware OpenGL libraries for X windows. For generic UNIX machines (eg linux), there is a software implementation of OpenGL call MesaGL. Recent RedHat distributions include Mesa as an optional RPM. Other distributions no doubt do likewise. In principle, there is nothing to stop you developing under UNIX and doing a quick port at the end (everything has a UNIX version), but there will be no support for this. Finally, if you're a true hacker and want to modify your linux kernel and X libraries, and you have an nvidia based graphics chipset, you can obtain hardware OpenGL drivers. I use them and they're great. Recent linux distributions may include them already.


OGRE (Object-oriented Graphics Rendering Engine) is an open-source graphics rendering engine that is written and maintained by a small core team, and contributed to by its ever growing community. Those of us that use it believe it's one of the better free and open engines out there today, but don't take our word for it - try it out for yourself.

Ogre is a graphics engine, and only a graphics engine. However, it can easily be tied together with other libraries to create a game engine. Some libraries you might need to create a game are:

  • Sound
  • Networking
  • Input
  • Collision

Ogre does not include these libraries natively, although it does expose an interface that makes it easy to work Ogre into an existing application. There are several reasons that Sinbad (the lead developer) has chosen to follow this route.

Ogre is a realtime rendering engine. Many of the pictures on cgtalk and other sites are rendered offline or slowly, often with ray tracing. The technology of the two are fundamentally different. One can make offline rendered pictures as detailed or realistic as one has the time to process each image. It may take several hours or longer to generate a full screen image. With realtime rendering, each image is rendered in say 1/30th to 1/100th of a second for a decent framerate. Nevertheless, the strides being made in current 3D graphics hardware have allowed realtime rendering to become very detailed and realistic looking. Ogre is bound by the hardware you run it on and your imagination. For a look at what kind of graphics you can expect, look at the images NVIDIA and ATI use to sell their graphics hardware.

History - Print - Recent Changes - Search
Page last modified on December 16, 2009, at 10:36 PM EST