The goal of this project was to create a tool completely developed in C++/OpenGL, without the use of any auxiliary libraries or engines, with the purpose of learning how to set up a working graphic application from scratch.
The tool allows for the edition of a spline curve by modifying, creating and deleting its control points, and the use of a camera to follow the created path. The curve is implemented as a uniform B-spline, which makes it possible to have an arbitrary number of control points.
One of the key aspects of the application is the adaptive sampling for rendering the spline curve. While uniform sampling draws a straight segment after a fixed step through the curve, adaptive sampling uses more samples on sections of the curve that need so. This way, pronounced turns are sampled more intensively, while almost straight sections use only the needed amount of samples, thus achieving both maximum rendering quality and efficiency.