Graphics Links at

An OpenGL Skeleton

Screenshot of OpenGLSkeleton

I wrote the first version of OpenGLSkeleton when I was the TA for ASU's Introduction to Computer Graphics class. The class was at that time based on Visual C++ 6.0, using MFC for UI, and OpenGL to learn about 3D graphics. To illustrate the process of getting OpenGL setup in an MFC window, I wrote a "skeleton" program that displayed a small static scene. This program was paired with step-by-step instructions for the students walking them through the process of creating their own project, copying in the code needed to get OpenGL working, and then extending the provided code with some basic MFC UI elements to modify scene elements.

The original OpenGLSkeleton went through several re-writes over the following semesters to make the code less intimidating and easier to get started with. The skeleton code on this page is an extended version of the solution to the skeleton used the last semester I taught CSE470, in Spring of 2004. That version of the skeleton, and the step-by-step instructions that went with it, can also be found at the bottom of this page. I have extended the solution with a very basic camera class and a vector class to support it, allowing manipulation of the view of the scene with the mouse. This extension makes it more interesting and useful, at the cost of some complexity that students just beginning to work in 3D did not yet need.

I am posting this skeleton because I have had many past students of 470 tell me that they still use whichever copy was current when they took the class, whenever they need to start a new small OpenGL project. I feel that it must be useful and the walk-through helpful if it is still being used by students after the class has ended.


The source for OpenGLSkeleton is in Visual C++ 6.0 format. It includes all of the necessary files for compilation, and should be ready to compile as soon as it is unzipped. Be sure to unzip the source with a utility that recognizes zipped subdirectories and retains the original directory structure, because several files should be in the res subdirectory in order for VC++ to find them. Once unzipped, double-click the OpenGLSkeleton.dsw to open the workspace in VC++. Newer versions of Visual C++ will likely convert the workspace to a solution (.sln) file with no problems, but the code and comments were written with VC++ 6 in mind, and I cannot be sure how accurately it will translate to newer versions.

Graphics Links at
Page contents copyright Ryan Holmes