Jorge Martinez

Aerospace Engineer and Senior Software Developer


Computer Graphics with OpenGL - Part I

Jorge Martínez Garrido

June 16, 2024

opengl computer graphics


Abstract

In this series, we will dive into the fundamentals of computer graphics using OpenGL. In this post, we explore the origin of the term. Then, the history of OpenGL is revisited together with some fundamental ideas. Next, other graphics APIs are presented. Finally, the software and hardware requirements for this tutorial are listed.

Computer graphics

The term computer graphics was originally coined in 1960 by William A. Fetter to describe his work at The Boeing Company.

The Boeing Man, originally designed by William A. Fetter.
The Boeing Man, originally designed by William A. Fetter.

One of the designs from William’s became very popular due to its aesthetics. This design was The Boeing Man. This wireman was the first model of a human body and it was used for modeling the figure of a pilot.

Other designs from William’s include experimental aircraft models. These complex shapes proof the usefulness of computer graphics, despite the limitations of the hardware in the 60s.

Experimental aircraft model, first CAD designs by The Boeing Company
Experimental aircraft model, first CAD designs by The Boeing Company

The development of OpenGL

During the 80s, the company Silicon Graphics Inc. (SGI), developed the Integrated Raster Imaging System Graphics Library (IRIS GL). This application programming interface (API) was propietary and could only run in SGI hardware.

A decade later, SGI recognized the need for standarization. A cross-platform graphics API specification was designed. OpenGL was born. The first version, OpenGL 1.0 was released in June 30, 1992.

To oversee the development and maintenance of OpenGL, a comitee was established in the same year. The OpenGL Architectural Review Board (ARB), known today as The Khronos Group, Inc., has an extensive membership list. Its members, mainly companies,are involved in various activities, including 3D graphics, virtual reality (VR), augmented reality (AR), parallel computing, among others.

Logo of The Khronos Group, Inc.
Logo of The Khronos Group, Inc.

But what exactly is OpenGL?

OpenGL is a graphics API specification. It is cross-platform, ensuring portability across systems. The latest OpenGL specification is OpenGL 4.6.

The next time you search how to download OpenGL or download latest OpenGL version, keep in mind that you are not looking for source code files. Instead, you should download the appropriate driver for your machine.

Logo of OpenGL. All Khronos Group trademarks can be downloaded from https://www.khronos.org/legal/trademarks/
Logo of OpenGL. All Khronos Group trademarks can be downloaded from https://www.khronos.org/legal/trademarks/

The evolution of OpenGL

OpenGL has evolved since its first release. Despite new major releases, OpenGL retains older features and capabilities. Despite being backwards compatible, they old specifications are discouraged in favor of modern ones.

It is important to mark the release of OpenGL 2.0 version. This version introduced the OpenGL Shading Language (GLSL). This shading language is used to program the so-called shaders. Shaders are programs that execute in the Graphic Processing Units (GPUs). Similarly to the cores of Central Processing Units (CPUs), GPUs cores are known as shaders.

OpenGL timeline. An interactive view is provided in https://www.khronos.org/about/timeline
OpenGL timeline. An interactive view is provided in https://www.khronos.org/about/timeline

Before shaders, OpenGL a rendering pipeline known today as fixed pipeline. This legacy pipeline is more intuitive on behalf of being less performant. Although GPUs are common nowadays, dedicated graphics hardware was not a common thing for the individual back in the days of OpenGL 1.0. Instead, CPU graphics or integrated graphics were used.

When a system lacks a GPU, the fallback mechanism of OpenGL is to use the CPU. Limitations may be faced in this scenario.

Other graphics APIs

OpenGL is not the only player in the game of graphic APIs. Some other alternatives to OpenGL include:

Other graphics APIs focus on platforms different than computers. For example:

Hardware and software requirements

The dependencies for this series include:

Here are my specifications: