OpenGL is not a typical programming library like OpenCV or Qt. Its maintainer, the Khronos group, only designs and defines the API of OpenGL as a specification; however, it is not responsible for the implementation. Instead, it is the graphics card manufacturer's responsibility to give the implementation. Most manufacturers, such as Intel, AMD, and Nvidia, give their implementation in the drivers of their graphics cards. On Linux, there's an OpenGL implementation called Mesa, which can do software rendering while hardware rendering is also supported if the graphics card is driven correctly.
Nowadays, OpenGL has a steep learning curve; this is because you need to understand the heterogeneous architecture and another programming language, called the OpenGL Shading Language, as well as C and C++. In this chapter, we will use the new style API, which was introduced...