For an example of OpenGL bindings in another language, check out
hello.py. This is a Python version of Example 1-2 from the OpenGL Programming Guide. Compare this to the C version you're using for your homework -- the language may be different, but OpenGL is the same.
Things have come a long way since the last time I went looking for OpenGL bindings. While scripting languages have always tended to have them (e.g., Perl, Python, Ruby, Lua, Io, even PHP -- yikes!), bindings for "industrial-strength" languages have always seemed to lag behind.
Instead of the panoply of Java bindings that held sway in the early years, sanity finally seems to have taken hold in the form of semi-official JOGL project. Heck, they even have a JSR.
Over in the proprietary, closed-source, Windows-only, Microsoft-owned world of C# (can you tell I'm biased? And don't tell me about Mono -- as soon as I can type "apt-get install monodevelop", start the IDE, create a project and start typing code without hanging or crashing, we'll talk) things seem to have gotten better. Or if not better, at least there are more choices:
As with all things Lisp-y, OpenGL support is pretty fragmented. Whether there is an OpenGL binding, how well it works, and whether you get get any help if it doesn't is largely dependent on which Lisp you're using. You may be better off with Scheme, where the Sgl library for PLT Scheme appears to be officially supported.
When it comes to getting all this set up, though, as I said earlier, you're on your own.
Win32 GLUT setup help
If you're not planning to do your programming in C or C++ or on Windows, that's perfectly fine, but note two things:
If we went too fast in lab Friday night, or if you're finding that the instructions in the README file included with the Win32 GLUT distribution are insufficient, you may also want to check out these resources:
- When you submit assignments, you need to document any build dependencies (i.e., libraries that you rely on)
- When it comes to getting your environment up and running, you're on your own.
Assignment 0 is available.
If you are using Visual Studio, you may run into a problem compiling Example 1-2 from the OpenGL Programming Guide. If you run into a large number of errors complaining about undefined constants like
WINGDIAPI, then problem is the two header files in the listing:
The problem is that the Win32 OpenGL implementation is done in terms of the Win32 API, and uses Win32 API constants to declare functions. You can fix this by
windows.h first, by swapping
gl.h, or by just
glut.h by itself, because the GLUT header
Incidentally, take a look at the hoops you have to jump through in the first 100 lines or so of the Win32 version of
glut.h just to get the headers straight to see why I stopped writing code for Windows in 1999 and haven't looked back.