Fairground OpenGL

Fairground OpenGL

2020

JavaOpenGLMavenShadersBezier

What I Built

A 3D fairground rendered in OpenGL (Java), built up through a series of increasingly complex exercises. By the end it had animated rides, a winding path made from cubic Bezier curves, textured surfaces, light poles with a toggleable night mode, and two camera modes (flying and first-person).

What I Learned

  • OpenGL fundamentals: Scene management, geometric object rendering, the matrix stack. The kind of low-level graphics knowledge that most frameworks hide from you.
  • Fragment shaders: Writing GLSL to control surface properties directly. Much more flexible than fixed-function lighting.
  • Bezier curves in practice: Implementing a texture-mapped path along a cubic Bezier curve required thinking carefully about parameterization and arc length.
  • Camera systems: A flying camera and a first-person camera have surprisingly different implementations and feel very different to use.

Abstract

This was a university computer graphics assignment structured around incremental exercises. Starting from a basic scene, each stage added new concepts: geometry, animation, lighting, shaders, and curve-based geometry. The end result is a small but reasonably complete virtual environment.

Code available upon request