OpenGL and Other Graphics Libraries

This topic was published by and viewed 1622 times since "". The last page revision was "".

Viewing 1 post (of 1 total)
  • Author
    Posts

  • DevynCJohnson
    Keymaster
    • Topics - 437
    • @devyncjohnson

    In the world of Linux, and computers in general, there are many APIs which provide developers an easy way to standardize or implement particular features or frameworks. Some important graphics API frameworks include OpenGL and OpenAL. Many libraries provide a standard way to interface with some kind of software or provide an ability to complete some kind of task. For example, Xlib provides a standard way for applications to communicate with the X Server. Otherwise, programmers would need to program that code into programs that communicate with other programs and system processes.

    The Open Graphics Library (OpenGL) is a cross-platform graphics renderer library. OpenGL shares a lot in common with the Cairo library, but differences do exist. OpenGL supports 2D and 3D vector graphics while Cairo only supports 2D vectors. OpenGL uses Graphics Processing Units (GPUs) for hardware acceleration. OpenGL supports many video cards and can be active on a system with Cairo. By this, I mean, users do not have to just have Cairo or OpenGL on their system. Users can (and should) have both installed. Many video games use OpenGL to provide the graphics, especially the 3D graphics.

    Open Audio Library (OpenAL) is a lot like OpenGL, but manages sound instead of video. OpenAL can handle multi-channel sounds and sounds of high or low quality. OpenAL is implemented in many video games like 0AD, Minecraft, Quake 4, Hitman, ioquake3, Doom3, OpenArena, and many others.

    Open Sound Library for Embedded Systems (OpenSL ES) is basically OpenAL for embedded systems like Android. OpenSL ES manages games, music, and the phone differently since they have different needs.

    Open Media Acceleration (OpenMAX or OMX) is a lot like OpenAL and OpenGL, but OMX is used on embedded systems that must process large amounts of graphics efficiently. OMX is commonly used on video game consoles.

    Open Vector Graphics (OpenVG) is like OpenGL, but without 3D-graphics support. OpenVG is used on embedded systems to provide a user interface. OpenVG is like Cairo, but OpenVG is more suitable for embedded systems.

    Open Windowing Foundation (OpenWF) is another API for embedded systems and uses hardware acceleration. OpenWF is used for managing windows on an OS.

    Open Media Library (OpenML) processes, displays, captures, etc. media on embedded systems (https://www.khronos.org/openml/spec/). OpenML can support both 2D and 3D graphics. OpenML also supports some networking and I/O operations.

    Open Computing Language (OpenCL) is an API framework to allow programs to run on systems that have many CPUs, GPUs, and other types of processors.

    Open Accelerators (OpenACC) is like OpenCL, but is designed more for parallel computing.

    OpenKODE contains OpenMAX, OpenGL, OpenVG, and OpenSL as well as its own components. OpenKODE is meant to manage media on hand-held devices. The core of OpenKODE is POSIX-like.

    OpenSG (Open Scene Graph) is a cross-platform library used to create graphics commonly used with virtual reality software (http://www.opensg.org/).

    GLFW (http://www.glfw.org/) is a library that can be used with OpenGL. GLFW can be used to create windows and receive input from various devices (including joysticks) and the clipboard. However, GLFW cannot be used to make buttons or dialogs.

    GLUT (OpenGL Utility Toolkit) provides utilities for I/O operations needed by OpenGL programs. GLUT is cross-platform. GLUT is no longer maintained, so users may want to use the two alternatives - OpenGLUT and FreeGLUT. FreeGLUT is stable and can replace GLUT (http://freeglut.sourceforge.net/). Ports to Android and Blackberry are being made for FreeGLUT.

    GLU (OpenGL Utility Library) is a library that is found in OpenGL. This particular library offers high-level drawing functions such as texture maps, camera position, shape generation, interpretation of OpenGL error codes, and more.

    GLUI (OpenGL User Interface Library) is a C++ library based on GLUT that can be used to make buttons and other widgets for OpenGL-based software (http://glui.sourceforge.net/). GLUI is very lightweight. Therefore, it cannot provide as many features as other widget toolkits (such as GTK or Qt).

    WebGL (Web Graphics Library) is a web-browser JavaScript binding for OpenGL (http://www.khronos.org/webgl/). This allows graphics rendering without the need for plugins.

    WebCL (Web Computing Language) is a JavaScript binding that supports OpenCL in the web-browser (http://www.khronos.org/webcl/). No plugins are required to run WebCL (if the JavaScript engine supports WebCL). At this point in time, web-browsers do not natively support WebCL, although some developers are implementing WebCL.

    SDL (Simple DirectMedia Layer) is a library that provides a low-level hardware abstraction layer. This layer is used for various graphical programs. SDL is cross-platform and is used on a variety of systems. SDL can provide rendering acceleration, event handling (like accepting joystick input), multi-threading, TrueType font rendering, play and record sound, haptic feedback, etc. However, SDL is not a gaming platform. It can be used to provide various features to a game engine, but the library itself cannot be used to create a game.

    SFML (Simple and Fast Multimedia Library) is a cross-platform library that is similar to SDL (http://www.sfml-dev.org/).

    GLX (OpenGL Extension to the X Window System) is a library that interfaces between X11 and OpenGL. While Linux uses GLX, OS X uses CGL (Core OpenGL) to provide an interface to the Quartz windowing system, and Windows uses WGL (Windows OpenGL) to provide an interface to the Microsoft windowing system. Also, AGL (Apple Graphics Library) is used by OS X to provide an interface between OpenGL and Carbon windows.

    PLIB is an open-source graphics library used to make games (http://plib.sourceforge.net/). PLIB can provide sound, font rendering, math functions, 3D graphics, game scripting, networking, window creation, and more. PLIB can be used to replace SDL or other graphics libraries.

    Delta3D is a 3D-graphics engine used to make games and simulation software (http://delta3d.org/).

    libpolo is a C/C++ library that provides graphics, network, and sound functions (https://code.google.com/p/libpolo/).

    Further Reading

Viewing 1 post (of 1 total)