This page provides a collection of links of specific relevance to CMPS 160. It is naturally incomplete.
This class will focus almost exclusively on the OpenGL graphics interface for real-time, hardware accelerated rendering. Although Microsoft's Direct3D API is more widely used in the technology industry, it is a proprietary system and was for many years largely inferior to OpenGL. For those systems without an official OpenGL interface, the Mesa3D graphics library is freely available.
For a concise introduction to OpenGL programming, some excellent tutorial programs have been made available by Nate Robins.
To facilitate the efficient development of your programming assignments, we recommend using the cross-platform libgfx graphics support library written by Michael Garland. libgfx provides a minimalist GUI framework in addition to simple vector, matrix, and raster image classes.
libgfx is built on top of the FLTK toolkit, which is a cross platform C++ GUI library for Windows, Linux, and Mac. The GLUT toolkit is another historically popular GUI library, but it provides very limited functionality compared to FLTK. SDL is yet another option for on-screen rendering, and typically provides superior performance and extensibility at a mild usability cost.
Graphics systems often need to both read and write raster image data. We recommend using either the Tag Image File Format (TIFF) or the Portable Network Graphics (PNG) format. Both of these formats provide lossless compression and are compatible with libgfx through the libtiff and libpng libraries.
As your coding projects become more complex, finding a suitable text editor and learning how to use it becomes increasingly essential. Wordpad, Notepad, and the built-in editors in Xcode and Visual Studio are not particularly good choices. Instead, we recommend Emacs or Vim. While both have steep learning curves, they are incredibly powerful tools in the hands of trained users. If you choose Emacs, you may find the glsl-mode package particularly useful later in the course.
Since most of the homework assigned in this course will be mathematical in nature, we highly recommend that you use LaTeX to typeset your solutions. MiKTeX is a good TeX implementation for Windows, while teTeX is the distribution of choice for UNIX compatible systems. If you don't want to go to the trouble of learning LaTeX, LyX provides many TeX-like features in a friendly GUI.
Every serious software developer utilizes some type of source control for complex projects. The de facto standard has long been CVS, but the system is slightly outdated. A newer, more web-friendly version control solution is Subversion, which contains most CVS features in addition to several modern improvements.