OpenGL is a rendering system, but this is all that it is. It has no functionality for loading images or meshes from files. It cannot even directly interact with the OS's windowing system, relying instead on external systems like WGL or GLX for that. As such, any significant use of OpenGL will involve some libraries or other tools to make using the library easier.This is a listing of useful tools for developing OpenGL applications.
These are full toolkits for developing OpenGL applications. They include everything you need.
- Graphics And Physics Framework
- German OpenGL based graphics And physics framework.
- Unofficial OpenGL SDK
- A collection of several cross-platform libraries, using a common build system to simplify OpenGL development. It distributes several easy-to-use libraries for GL initialization. It contains libraries for window creation, loading functions, loading images, vector math and more.
The creation of a window to render stuff in is not covered in the OpenGL specification. This is handled by platform-specific APIs. These APIs have been abstracted in many toolkits.
These toolkits are designed specifically around creating and managing OpenGL windows. These tools usually provide basic input and timing support, but little else.
Several "multimedia libraries" can create OpenGL windows, in addition to input, sound and other tasks useful for game-like applications.
Many widget toolkits have the ability to create OpenGL windows, but their primary focus is on being widget toolkits.
OpenGL Loading Library
OpenGL loading libraries automate the process of loading OpenGL functions.
|GLEW||1.10.0||An OpenGL loading library which loads all core versions and extensions. Supports OpenGL 4.4.|
|gl3w||N/A||A tool for generating OpenGL loading code for core 4.6 functions.|
|OpenGL Loader Generator||2.0.0||A tool for generating OpenGL loaders that includes the exact version/extensions you want, and only them. Supports OpenGL 4.4|
These tools are for reading image file formats. Not all of them support loading directly into OpenGL Textures; some are pure image loaders.
|DevIL||Supports many image formats for reading and writing. It supports several compilers and OSes (Win, Linux, Mac OSX). The library has a OpenGL-like syntax. It has not been updated recently.|
|FreeImage||A cross-platform image loading library with very wide support for image formats (including some HDR formats like OpenEXR).|
|GLI||A small cross-platform C++ image library able to load DDS textures (DDS9 and DDS10), compressed or uncompressed. It is licensed under the MIT license.|
|GLAUX||Ancient .BMP loader. Never use this.|
These tools load meshes into memory. They do not load them directly into OpenGL Buffer Objects or set up the data needed for Vertex Specification.
|Open Asset Import||Reads a variety of 3D file formats, including COLLADA (often .dae), Blender3D native files (.blend), 3DS (.3ds), Wavefront Obj (.obj), and many more.|
|lib3ds||The lib3ds library is for reading 3ds files.|
Core profiles of OpenGL no longer have matrix math functions. Therefore, the user will typically need to provide this functionality in some way. These libraries serve that purpose.
|GLM||A cross-platform C++ mathematics library designed to match GLSL math functionality as much as C++ can. It also provides vectors and matrices classes and functions to replace the removed OpenGL functions and many more features from half-precision floating point or quaternions. It is licensed under the MIT license.|
|TVMet||A cross-platform math library focused on CPU performance via the use of expression template metaprogramming techniques and lazy evaluation. It is licensed under a modified from of the GNU LGPL license. The license modification specifically allows static linking without having the entire program be subject to LGPL. The library has not been updated since 2007.|
These are libraries or applications that aid in debugging OpenGL programs. Some are platform-neutral, while others are platform-specific.
- A tool that can trace the execution of any OpenGL functions in an application. It can extract images, shaders, and so forth. It also automatically logs all OpenGL function calls. Works on Windows and somewhat on Linux.
- OpenGL, OpenGL ES and OpenCL Debugger, Profiler and Memory Analyzer For Windows, Linux, Mac OS X and iPhone. Has reached end-of-life and will not be updated.
- AMD CodeXL
- AMD hardware-specific tool for debugging OpenGL and OpenCL applications. It is primarily focused on OpenCL applications, but it does have some OpenGL functionality. It allows tracing of OpenGL calls, shader debugging, and profiling. It requires Radeon HD5xxx hardware or better, and possibly an AMD CPU.
- NVIDIA Nsight
- NVIDIA hardware-specific tool for debugging OpenGL and CUDA applications. It provides tracing of OpenGL calls, shader debugging, and profiling support. Full functionality requires GeForce GT4xx hardware or better; functionality can be obtained for GeForce 9xxx+ hardware, but only with two separate machines.
A scene graph is a library that manages the placement of objects in a scene. Many of them support lights and other object types.
|Gizmo3D||Windows, OSX, GNU/Linux, iOS, Android, IRIX|
|Open Scene Graph||Windows, OSX, GNU/Linux, IRIX, Solaris, FreeBSD|
|OpenSG||Windows, IRIX, Linux|
|Windows, Linux, OSX.|
A rendering engine is a library that handles all of the elements needed for rendering. These are more than a scene graph; they handle all of the details of shaders, image and mesh management, and so forth. Most of them can use Direct3D or OpenGL as the internal rendering system.
A game engine is a library or program that contains all the tools needed to make a game. This includes rendering, but is not limited to that.
|ClanLib||A cross platform C++ toolkit library with a BSD style license. Essentially the library offers a series of different functionality under a streamlined API.|
|Delta3D||Game engine based on Open Scene Graph and ODE.|
|Panda3D||A C++ 3D game engine with Python bindings.|