CS184 Framework
Download links in the versions section further down the page.
Overview
This framework is constantly being developed. It has three design goals:
- Give you the tools you need to complete the assignments without forcing you to waste time of programming support code.
- Allow us to demonstrate C++ and OpenGL programming techniques
- Allow the graders to easily compile and grade your assignments.
Framework Contents
As of the moment, the framework is still small enough that 10 minutes of reading the code will more than suffice to get you up and running.
The core contents of the framework consists of:
- Internal Libraries and Structures:
- Matrix and Vector library in
./include/algebra3.h
- Screen Capture library in
./src/UCB/
- OBJ parser in
./src/UCB/
- Platform-dependent support code
- External Libraries:
- OpenGL (linked through header files)
- C++ Standard Template Library for basic data structures (linked through header files)
Coding
Place your source code in the
src
directory, starting with
main.cpp
.
You can create more files to organize your source code, even going so far as to follow the Java convention of creating a separate file for each class (in this case
.h
and
.cpp
).
What you need to implement
You are allowed to change as much as you want. There are certain parts of the framework that we have left for you to implement, and those are indicated twofold:
- Comments of the form
//YOUR CODE HERE
- A macro call of the form
IMPLEMENT_ME(__FILE__,__LINE__);
that causes the program to write an error message and terminate if the function is used.
Minimum requirements for submission purposes
Since the framework is partially designed to make grading easier, we ask that your submissions follow the compilation instructions established by it:
Windows |
  |
Building the solution should involve only opening the project's .sln file and pressing F5 to build and run. |
Mac OSX |
  |
Typing make (or
optionally make -f makefile.osx for as1) must compile your
solution. |
Linux |
  |
Typing make must compile your solution. |
Solaris |
  |
Typing gmake must compile your solution. |
Helpful Links
You want to look at both the Red Book and Blue Book for information on OpenGL:
- The OpenGL Programming Guide (RedBook) [here]
- The OpenGL Reference Manual (BlueBook) [here]
This version includes a skeleton and associated mesh class, with a bunch
of helpful features for doing IK and animation.
This version include support for loading images using
FreeImage and GLSL shaders using GLEW, which stands for GL Extension
Wrangler. Yes, GL has so many extensions that wrangling is required
...
It's also a bit less likely to run on your computer,
especially if you don't have a reasonable graphics card. Please test it
out early and make sure you can run it. The solaris machines will not run
it, but the hive cluster in Soda 330 work well for it.
This version includes a roller coaster.
Finally, we are doing raytracing! Fun! Several of the
components of a raytracer are already partially implemented, which should
help you get your raytracer up and running quickly.
This version includes the Scene file parser, a significant addition to our framework. The command line argument now needs to be a valid scene file. We include a simple scene file that you can use. We build the scene graph for you, you need to write the traversal code.
This version of the code expects a commands line argument to run. To provide a command line argument in Visual Studio, open the project properties menu, select Debugging under Configuration Properties, and add your desired arguments to the Command Arguments field.
This version includes screen capture to a BMP image progression, and a basic OBJ parser. It also contains the necessary templates for building a polygon morpher.
This version of the code expects a commands line argument to run. To provide a command line argument in Visual Studio, open the project properties menu, select Debugging under Configuration Properties, and add your desired arguments to the Command Arguments field.
Submission
Using the
submit as
on the instructional machines preserves directory structure, thus running
submit
in the root directory of your submission will allow you to submit the entire project with framework and all. We recommend making a directory for your assignment in your CS184-XX account, and running
yes | submit as
inside that directory for quick submission.
Initial Setup and Programming Environment
There exists a plethora of tools for C++ authoring. Windows users tend to use the Visual Studio environment, which we recommend (download legally for free here or here). Vim, Emacs and Nedit are all popular text editors used for programming, while Eclipse, Xcode and KDevelop are IDE-based environments that assist greatly in programming.
Compilation
Windows |
  |
You can either install Cygwin and its associated packages (compilers and GLUT) and follow a linux-like approach, or you can download Microsoft Visual Studio (alternative link) to use for development (probably an easier option for windows users).
For Visual Studio:
Open the .sln file and press F5 to Build Solution. If you are using Visual
Studio Express 2005, you should either install the platform sdk (instructions)
or (preferably) upgrade to a newer Express version or a full version of
Visual Studio for free. |
Mac OSX |
  |
You need to install the Xcode developer toolkit from Apple. Register for a free account. From here you can use your favorite editor and compile from the terminal using the same approach as Solaris. Compile with make |
Linux |
  |
You need to install gcc (or similar compiler), the standard c++ libraries, and GLUT. On an aptitude-based system (Debian, Ubuntu), you can accomplish this by installing the build-essential and freeglut3 package. You can now follow the same instructions as on Solaris. |
Solaris |
  |
Assuming you are on one of the instructional machines, you should be able to compile immediately by running gmake -f makefile |