OpenGL is a software interface to graphics hardware. It provides an abstraction model to the graphics subsystem, which allows programmers to code 2D and 3D graphics efficiently regardless of the specific hardware details. For the developer, OpenGL is nothing but a set of calls that allows the declaration of geometric objects, along with control mechanisms that determine how those objects are rendered. OpenGL is also considered an immediate-mode API, meaning that declaring an object in OpenGL generally causes the object to be drawn. There are no persistent data structures or calls to simply declare geometry. Most OpenGL calls directly affect the contents of the frame buffer. This makes the API smaller and easier to learn. It also makes porting your application to OpenGL quite fast. You can still use all your object hierarchy because OpenGL does not force you to use any specific data structure. Only the rendering core must be OpenGL compliant. OpenGL is also a platform-independent API. You can run OpenGL applications on anything from PCs to handhelds, game consoles, or parallel supercomputers, virtually without touching a single line of code. This is achieved by providing only the calls required for rendering. OpenGL does not handle tasks such as window management, memory allocation, and so on, which the application programmer must handle specifically for each operating system (OS). Then, you can choose between writing your own OS-dependent code to handle windows and memory blocks, or use any of the auxiliary libraries (such as GLUT, the OpenGL Utility Library Toolkit) that have spawned through the years, which allow you to forget about OS-dependent code. OpenGL is a free, open standard. OpenGL was introduced by Silicon Graphics, but it is governed by an industry-wide Architecture Review Board, a committee formed by companies such as Microsoft, NVIDIA, Evans & Sutherland, and many others (obviously, SGI included). Features are added only when a broad consensus is reached, so the API remains elegant and free of vendor-specific calls. Sometimes specific vendors will implement proprietary features under the form of extensions. These are sets of calls that only work on some vendors' APIs, so they somehow break the elegance of the architecture. But as these extensions become popular, they are often incorporated into the next release, so we can say OpenGL is one of the most vendor-neutral APIs on the market. |