OpenGL Programming/3D/History

From Wikibooks, open books for an open world
Jump to navigation Jump to search

Early history[edit | edit source]

IrisGL, a proprietary graphics API, is the precursor of OpenGL. Developed by Silicon Graphics Inc. (SGI), the computer graphics market leader back then, IrisGL was used as the starting point of an open standard for computer graphics that would save time porting applications by avoiding direct hardware access. After SGI cleaned up IrisGL and opened up the standard to other companies, OpenGL was born.

In 1992 the OpenGL Architectural Review Board (OpenGL ARB) was established. The OpenGL ARB is a group of companies that maintain and update the OpenGL standard.

Extensions and their Relevance[edit | edit source]

Android Extension Pack[1] is a Google-standardized subset of OpenGL extensions above and beyond the core set described in the OpenGL 3.1 specification. It provides an incentive for device manufactures and driver vendors to provide these extensions and subsequently for developers to make use of them.

OpenGL and Direct3D[edit | edit source]

There has been a great dispute as to which implementation is better than the other, with no conclusive answer. Both APIs are used to do the same effect, and disputing which one is faster or produces better results is an unnecessary debate. Also note that Direct3D is part of DirectX, and comparing OpenGL to DirectX has no real meaning.

Differences between OpenGL and Direct3D[edit | edit source]

OpenGL is an open standard, meaning its details are available to anyone who wishes to implement it. As referred in the introduction to OpenGL, several parties are involved in shaping the evolution of OpenGL. Direct3D is proprietary software, meaning its owner (Microsoft) is the only one with access to its details, also the only entity able to change the course of its evolution.

OpenGL is multi-platform. Nearly every computer device has an implementation of this API. A graphics engine written with OpenGL could (theoretically) run on any of this hardware (PC, MAC, game consoles, cell phones...). DirectX is Microsoft only. Engines coded in DirectX can only run on Microsoft's operating systems.

Facts and myths[edit | edit source]

Direct3D is faster/slower than OpenGL[edit | edit source]

On the same conditions, both implementations will run at the same speed, since they are both implemented by the same graphics driver. Any performance differences are based on faulty graphics driver and not the API itself. Often, comparisons of games (such as Enemy Territory or the Unreal series) running in Windows with Direct3D and on Linux with OpenGL state that one is running faster than the other, but this is not a valid comparison, since the environment in which the test is run differs.

OpenGL has been surpassed by Direct3D and has no future[edit | edit source]

This is the same as saying that there shall be no more operating systems other than Microsoft's. As long as there are several operating systems (not only for computers), OpenGL will exist.

OpenGL is more/less powerful than Direct3D[edit | edit source]

Again, both implementations depend on the graphics driver. Both implementations will always have the same functionality with the same hardware.

OpenGL has gone through much change during the years and there is a lot of outdated misleading advice around[edit | edit source]

This one is true.

some of the above resources are already in parts outdated nowadays.

There are usually several ways for accomplishing a given task in OpenGL and they differ in speed[edit | edit source]

Again, this is true. The prefered (faster) ways are nicknamed "fast paths".

Modernization of OpenGL is corporate ploy to overwhelm independent game developers[edit | edit source]

How do you expect any independent developer to have time and resources to deal with this kind of complications? OpenGL became successful because it was simple, but after years of corporate poking, it turned into DirectX. Embrace, Extend and Extinguish at its finest.
—lennyhome

This is a wrong interpretation. The more useful interpretation is that OpenGL turned from a high-level 3D graphics API into a multiplatform compatibility layer for programming GPUs. In some sense the modern OpenGL is a just a 2D API[2]. If you are a game developer in need for a full fledged 3D API, using OpenGL directly may not be for you. Instead, focus on your core competency of making the game itself and use an existing game engine (or higher-level graphics API like three.js) for graphics and all other aspects that do not constitute the core part of your software.

Present and Future[edit | edit source]

In 2003 the first OpenGL ES specification was released. OpenGL ES is a subset of OpenGL designed for mobile phones, embedded devices and video game systems.

In 2004 the OpenGL 2.0 specification was released, including the GLSL (OpenGL Shading Language) specification.

In August 2008, the OpenGL 3.0 specification was released.

  1. https://developer.android.com/guide/topics/graphics/opengl.html#aep
  2. http://games.greggman.com/game/webgl-2d-vs-3d-libraries/