This is a coursework for Advanced Computer Graphics, involving OpenGL. I also used QT 4 and GLSL in this project.
The goal of this coursework was to render 5 boxes on the screen, of which there must be a box that is user controllable. No box must ever overlap. Marks were awarded for extra features used. I implemented basic pulsating, rotating, growing boxes, that had inertia and drag bounced, and some even ate other boxes and grew larger. Some boxes shrank when hit, allowing me to pack more and more boxes on the screen by forcing existing boxes to shrink to make room if they collided.
Vertex and Fragment GLSL shaders were used to make boxes fade in rather than simply appear when spawned. The shaders were also used to make their alpha values cycle independently based on the age of the box. A box died when its scale became zero. A Geometry shader was employed temporarily and is still present but unused in the codebase.