3D computer graphics was one of the mysteries that captivated me into studying computers science; as part of my long-term learning process I established a goal for myself to develop an application which utilizes popular graphics frameworks such as OpenGL.
The OpenGL API provides high performance techniques for computer graphics manipulation; it harnesses the Graphical Processing Unit (GPU) to deliver computational power for repetitive but demanding tasks, in which a CPU wasn't primarily architecture to
perform effectively, such as video rendering.
Development with OpenGL uses the modern pipeline which allows software developers to have more control on how an image is rendered through the usage of vaious shaders. The pipeline operates in a sequential manner, starting from the vertex transformations via the vertex shader, to determining how each pixel should be colored and blended after the fragment shader.
OpenGL is also popular as it has been ported to other platforms; it can be used for embedded systems such as mobile phones or tablets via OpenGL-ES, or on web based systems with WebGL. It should be noted that these variations do not offer a complete coverage of the original API but still contains the fundamental packages.
This project took longer to complete than expected, I originally started the project in April of 2015; the project was initially written in Java and uses the LWJGL library to provide an OpenGL context. My learning resources were based on a couple of video
tutorials however as I further moved through the tutorials I realized that I wasn't really learning much and the provided code became more and more confusing, thus making the project come to a halt.