Difference between revisions of "Related toolkits and APIs"

From OpenGL.org
Jump to: navigation, search
(Toolkits to bridge OpenGL and the Window System: Copyediting.)
(OpenGL loading libraries)
(47 intermediate revisions by 8 users not shown)
Line 1: Line 1:
== Toolkits top on OpenGL ==
+
== Beginner frameworks ==
  
Many programming interfaces are layered on OpenGL with rich and varied functionality. Not all can interoperate.
+
One-shot downloads that contain multiple tools, so as to make it easier for the user to get started with OpenGL.
  
=== Extension libraries ===
+
; [http://glsdk.sourceforge.net/ 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 also has a library for OpenGL loading, image loading, and more.
 +
; [http://www.graphics-and-physics-framework.spieleprogrammierung.net/  Graphics And Physics Framework]: German OpenGL based graphics And physics framework.
  
A extension libraries simplifies the work with OpenGL extensions.
+
== OpenGL initialization ==
  
; [http://glew.sourceforge.net/ GLEW] : A extension library for Windows, Linux, Mac OS X, FreeBSD, Irix, and Solaris.
+
Creating an OpenGL context usually requires writing platform-specific code to create a window. It also requires loading OpenGL functions manually from that context. These tools simplify these tasks greatly, in most cases providing cross-platform solutions.
Get functions pointer to OpenGL functions with this library!
+
; [http://elf-stone.com/glee.php GLee] : A extension library for Windows, Linux and FreeBSD.
+
Get functions pointer to OpenGL functions with this library!
+
  
=== Scene graphs ===
+
=== Context/Window Toolkits ===
  
A [http://en.wikipedia.org/wiki/Scene_graph scene graph] works on the top of OpenGL.
+
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.
  
; [http://www.openscenegraph.org/ Open Scene Graph] : This scene graph works on all Windows platforms, OSX, GNU/Linux, IRIX, Solaris and FreeBSD.
+
'''OpenGL-specific toolkits.''' These toolkits are designed specifically around creating and managing OpenGL windows.
; [http://www.opensg.org/ OpenSG] : It's a scene graph which works on IRIX, Windows and Linux.
+
; [http://www.gizmosdk.com/ Gizmo3D] :This scene graph works on all Windows platforms, OSX, GNU/Linux, and IRIX.
+
  
===Game engines===
+
* [http://freeglut.sourceforge.net/ freeGLUT] : A crossplatform windowing and keyboard/mouse handler. Its API is a superset of the GLUT API, and it is more stable and up to date than GLUT. It supports creating a core OpenGL context.
 +
* [http://www.glfw.org/ GLFW] : A crossplatform windowing and keyboard/mouse/joystick handler. Contrary to GLUT, this is more aimed for creating games. Supports Windows, Mac OS X and Unix-like systems such as Linux and FreeBSD. Supports creating a core OpenGL context.
 +
* [http://en.wikipedia.org/wiki/OpenGL_Utility_Toolkit GLUT] : A crossplatform  windowing and keyboard/mouse handler. Very old, do not use.
  
; [http://panda3d.org/ Panda3D] : A C++ 3D game engine with Python bindings.
+
'''Multimedia libraries.''' Several multimedia libraries that can create OpenGL windows. These libraries include the ability to create OpenGL windows as part of their focus on being cross-platform libraries for using multiple media.
; [http://www.delta3d.org/ Delta3D] : Game engine based on Open Scene Graph and ODE.
+
  
== Toolkits to bridge OpenGL and the Window System ==
+
* [http://www.libsdl.org/index.php SDL] : A crossplatform multimedia library written in C. SDL supports Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX. The code contains support for AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, SymbianOS, and OS/2, but these are not officially supported. 1.2 does not support core OpenGL context creation.
 +
* [http://www.sfml-dev.org SFML] : A cross-platform multimedia C++ API that provides you low and high level access to graphics, input, audio, etc. Free, still updated and written in C++.
 +
* [http://alleg.sourceforge.net/ Allegro version 5]: A cross-platform multimedia C API focused on game development. It creates an OpenGL context (or D3D if on windows and you ask for one), and has a number of convenience functions and major subsystems useful to game developers. Supports core OpenGL context creation.
  
OpenGL knows nothing about the surrounding window system. You need [http://en.wikipedia.org/wiki/Widget_toolkit widget toolkit] to bridge OpenGL and the window system. The widget toolkit abstract the interface for connecting the windows system and OpenGL like [[WGL]], [[GLX]] and [[AGL]] away. There are many toolkits for that task. Most modern widget libraries provide this support.
+
'''[http://en.wikipedia.org/wiki/Widget_toolkit Widget toolkits].''' Many widget toolkits have the ability to create OpenGL windows, but their primary focus is on being widget toolkits.
  
=== Cross-platform Toolkits ===
 
 
* [http://clanlib.org/ 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. Its primary focus is on games, although not limited for that usage only.
 
* [http://www.equalizergraphics.com/ Equalizer]: A crossplatform framework for the development and deployment of parallel OpenGL applications for large scale graphics clusters and multi-GPU workstations.
 
 
* [http://www.fltk.org/ FLTK] : A small widget library.
 
* [http://www.fltk.org/ FLTK] : A small widget library.
* [http://freeglut.sourceforge.net/ freeGLUT] : A crossplatform windowing and keyboard/mouse handler. More up to date than GLUT.
+
* [http://qt.nokia.com/products/qt/index.html Qt] : A toolkit which abstracts the Linux, MacOS X and Windows away.
* [http://glfw.sourceforge.net/ GLFW] : A crossplatform windowing and keyboard/mouse handler. Contrary to GLUT, this is more aimed for creating games. Windows, Mac OS X and Unix-like systems such as Linux and FreeBSD.
+
* [http://www.wxwidgets.org/ wxWidgets]: A cross-platform widget toolkit.
* [http://en.wikipedia.org/wiki/GLUT GLUT] : A crossplatform windowing and keyboard/mouse handler. Very old, consider using the compatible freeGLUT instead.
+
 
** [http://www.xmission.com/~nate/glut.html GLUT binary and source for Win32] : Nate Robins, precompiled and source for Win32
+
=== OpenGL loading libraries ===
* [http://www.trolltech.com/products/qt/index.html Qt] : A toolkit which abstracts the Linux, MacOS X and Windows away.
+
{{main|OpenGL Loading Library}}
* [http://www.libsdl.org/opengl/index.php SDL] : A crossplatform windowing and keyboard/mouse handler. Better than GLUT because it is up to date. SDL supports Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX. The code contains support for AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, SymbianOS, and OS/2, but these are not officially supported.
+
 
* [http://www.sfml-dev.org SFML] : A cross-platform multimedia C++ API that provides you low and high level access to graphics, input, audio, etc. Free, still updated and written in C++.
+
OpenGL loading libraries handle the loading of OpenGL functions.
 +
 
 +
; [http://glew.sourceforge.net/ GLEW]
 +
: An OpenGL loading library for Windows, Linux, Mac OS X, FreeBSD, Irix, and Solaris.
 +
; [https://github.com/shakesoda/gl3w gl3w]
 +
: An OpenGL loading library, focusing on OpenGL3/4 Core context loading for Windows, Linux and FreeBSD.
 +
; [https://bitbucket.org/alfonse/glloadgen/wiki/Home OpenGL Loader Generator]
 +
: A tool for generating OpenGL loaders that include the exact version/extensions you want, and ''only'' them.
 +
 
 +
== Utilities ==
 +
 
 +
There are many utilities that, while they don't rely on OpenGL very much, are useful in making OpenGL applications.
  
 
=== Image and Texture Libraries ===
 
=== Image and Texture Libraries ===
 +
{{main|Image Libraries}}
 +
* GLAUX : this is a very old library that should not be used anymore. Most people who encounter GLAUX are people who see the NeHe tutorials which haven't been updated in years. NeHe uses auxDIBImageLoad() in order to read BMP files. GLAUX is no longer available.
 
* [http://openil.sourceforge.net DevIL]: DevIL stands for Developers Image Library. It supports many image formats for reading and writing, it supports several compilers and OS (Win, Linux, Mac OSX). The library has a OpenGL-like syntax. It has not been updated recently.
 
* [http://openil.sourceforge.net DevIL]: DevIL stands for Developers Image Library. It supports many image formats for reading and writing, it supports several compilers and OS (Win, Linux, Mac OSX). The library has a OpenGL-like syntax. It has not been updated recently.
 
* [http://freeimage.sourceforge.net/ FreeImage]: FreeImage is an cross-platform image-loading library, with very wide support for image formats (including some HDR formats like OpenEXR).
 
* [http://freeimage.sourceforge.net/ FreeImage]: FreeImage is an cross-platform image-loading library, with very wide support for image formats (including some HDR formats like OpenEXR).
Line 50: Line 58:
 
=== Math Libraries ===
 
=== Math Libraries ===
 
* [http://glm.g-truc.net GLM]: GLM ( OpenGL Mathematics ) is a cross-platform C++ mathematics library designed to match the GLSL math functions. It also provides vectors and matrices classes and functions to replace the deprecated OpenGL functions and many more features from half-precision floating point or quaternions. It is licensed under the MIT license.
 
* [http://glm.g-truc.net GLM]: GLM ( OpenGL Mathematics ) is a cross-platform C++ mathematics library designed to match the GLSL math functions. It also provides vectors and matrices classes and functions to replace the deprecated OpenGL functions and many more features from half-precision floating point or quaternions. It is licensed under the MIT license.
 +
* [http://tvmet.sourceforge.net/ TVMet]: The '''T'''iny '''V'''ector '''M'''atrix library using '''E'''xpression '''T'''emplates. This math library is focused on 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.
 +
 +
=== 3D File Libraries ===
 +
* [http://assimp.sourceforge.net/ Open Asset Import]: The Open Asset Import Library can read a variety of 3D file formats such as COLLADA (often .dae), Blender3D native files (.blend), 3DS (.3ds), Wavefront Obj (.obj), and many more.
 +
* [http://code.google.com/p/lib3ds/ lib3ds]: The lib3ds library is for reading 3ds files.
 +
 +
== Toolkits that are Layered on top of OpenGL ==
 +
 +
Many programming interfaces are layered on top of OpenGL, providing rich and varied functionality. Not all can interoperate.
 +
 +
=== Scene graphs ===
 +
 +
A [http://en.wikipedia.org/wiki/Scene_graph scene graph] is a layer on top of OpenGL that manages objects, their transforms in the world, and various other concepts.
 +
 +
; [http://www.openscenegraph.org/ Open Scene Graph] : This scene graph works on all Windows platforms, OSX, GNU/Linux, IRIX, Solaris and FreeBSD.
 +
; [http://www.opensg.org/ OpenSG] : It's a scene graph which works on IRIX, Windows and Linux.
 +
; [http://www.gizmosdk.com/ Gizmo3D] :This scene graph works on all Windows platforms, OSX, GNU/Linux, and IRIX.
 +
; [http://www.openinventor.com/ Open Inventor - by VSG] :Object-oriented scene graph API. Commercial implementation. Supports Windows, Linux, OSX.
 +
 +
=== Graphics engine ===
 +
 +
A graphics engine is higher level than a scene graph, as it manages all aspects of rendering. Shaders, image resource management, etc.
 +
 +
; [http://www.crystalspace3d.org/main/Main_Page Crystal Space]
 +
; [http://irrlicht.sourceforge.net/ Irrlicht]
 +
; [http://www.ogre3d.org/ Ogre3D]
 +
 +
=== Game engines/toolkits ===
 +
 +
Game engines are even higher level. They provide not only a graphics engine, but all of the ancillary structures needed to make a game. Entity concepts, physics control, etc.
 +
 +
; [http://panda3d.org/ Panda3D]: A C++ 3D game engine with Python bindings.
 +
; [http://www.delta3d.org/ Delta3D]: Game engine based on Open Scene Graph and ODE.
 +
; [http://clanlib.org/ 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. Its primary focus is on games, although not limited for that usage only.
 +
 +
==Other==
 +
 +
; [http://www.equalizergraphics.com/ Equalizer]: A  crossplatform framework for the development and deployment of parallel  OpenGL applications for large scale graphics clusters and multi-GPU  workstations.
 +
; [http://www.pixellight.org/site/ PixelLight]: An open-source cross-platform framework using OpenGL.
 +
; [http://oglplus.org/ OGLplus]: An open-source header-only library which implements a thin object-oriented facade over the OpenGL (version 3 and higher) C-language API. It provides wrappers which automate resource management and make the use of OpenGL in C++ safer and easier.
  
 
=== Sound or Audio Libraries ===
 
=== Sound or Audio Libraries ===
 
; [http://openal.org/ OpenAL] : OpenAL stands for Open Audio Library. It is maintained by people at Creative and nVidia and users. Multi OS support (Win, Linux, Mac OSX). The library has a OpenGL like syntax so it is easy to use. Closed source and open source portions. Access to special SoundBlaster features through extensions.
 
; [http://openal.org/ OpenAL] : OpenAL stands for Open Audio Library. It is maintained by people at Creative and nVidia and users. Multi OS support (Win, Linux, Mac OSX). The library has a OpenGL like syntax so it is easy to use. Closed source and open source portions. Access to special SoundBlaster features through extensions.
 +
; [http://kcat.strangesoft.net/openal.html  OpenAL Soft]: OpenAL Software Renderer.
 +
; [http://www.audio-framework.spieleprogrammierung.net/  OpenAL Audio Framework]: OpenAL based Audio Framework.
 +
 +
[[Category:Related Toolkits & APIs]]

Revision as of 20:25, 16 November 2012

Beginner frameworks

One-shot downloads that contain multiple tools, so as to make it easier for the user to get started with OpenGL.

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 also has a library for OpenGL loading, image loading, and more.
Graphics And Physics Framework
German OpenGL based graphics And physics framework.

OpenGL initialization

Creating an OpenGL context usually requires writing platform-specific code to create a window. It also requires loading OpenGL functions manually from that context. These tools simplify these tasks greatly, in most cases providing cross-platform solutions.

Context/Window Toolkits

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.

OpenGL-specific toolkits. These toolkits are designed specifically around creating and managing OpenGL windows.

  • freeGLUT : A crossplatform windowing and keyboard/mouse handler. Its API is a superset of the GLUT API, and it is more stable and up to date than GLUT. It supports creating a core OpenGL context.
  • GLFW : A crossplatform windowing and keyboard/mouse/joystick handler. Contrary to GLUT, this is more aimed for creating games. Supports Windows, Mac OS X and Unix-like systems such as Linux and FreeBSD. Supports creating a core OpenGL context.
  • GLUT : A crossplatform windowing and keyboard/mouse handler. Very old, do not use.

Multimedia libraries. Several multimedia libraries that can create OpenGL windows. These libraries include the ability to create OpenGL windows as part of their focus on being cross-platform libraries for using multiple media.

  • SDL : A crossplatform multimedia library written in C. SDL supports Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX. The code contains support for AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, SymbianOS, and OS/2, but these are not officially supported. 1.2 does not support core OpenGL context creation.
  • SFML : A cross-platform multimedia C++ API that provides you low and high level access to graphics, input, audio, etc. Free, still updated and written in C++.
  • Allegro version 5: A cross-platform multimedia C API focused on game development. It creates an OpenGL context (or D3D if on windows and you ask for one), and has a number of convenience functions and major subsystems useful to game developers. Supports core OpenGL context creation.

Widget toolkits. Many widget toolkits have the ability to create OpenGL windows, but their primary focus is on being widget toolkits.

  • FLTK : A small widget library.
  • Qt : A toolkit which abstracts the Linux, MacOS X and Windows away.
  • wxWidgets: A cross-platform widget toolkit.

OpenGL loading libraries

OpenGL loading libraries handle the loading of OpenGL functions.

GLEW
An OpenGL loading library for Windows, Linux, Mac OS X, FreeBSD, Irix, and Solaris.
gl3w
An OpenGL loading library, focusing on OpenGL3/4 Core context loading for Windows, Linux and FreeBSD.
OpenGL Loader Generator
A tool for generating OpenGL loaders that include the exact version/extensions you want, and only them.

Utilities

There are many utilities that, while they don't rely on OpenGL very much, are useful in making OpenGL applications.

Image and Texture Libraries

  • GLAUX : this is a very old library that should not be used anymore. Most people who encounter GLAUX are people who see the NeHe tutorials which haven't been updated in years. NeHe uses auxDIBImageLoad() in order to read BMP files. GLAUX is no longer available.
  • DevIL: DevIL stands for Developers Image Library. It supports many image formats for reading and writing, it supports several compilers and OS (Win, Linux, Mac OSX). The library has a OpenGL-like syntax. It has not been updated recently.
  • FreeImage: FreeImage is an cross-platform image-loading library, with very wide support for image formats (including some HDR formats like OpenEXR).
  • SOIL: SOIL ( Simple OpenGL Image Loader ) is a public-domain cross-platform image loader that's extremely small.
  • GLI: GLI( OpenGL Image ) is 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.

Math Libraries

  • GLM: GLM ( OpenGL Mathematics ) is a cross-platform C++ mathematics library designed to match the GLSL math functions. It also provides vectors and matrices classes and functions to replace the deprecated OpenGL functions and many more features from half-precision floating point or quaternions. It is licensed under the MIT license.
  • TVMet: The Tiny Vector Matrix library using Expression Templates. This math library is focused on 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.

3D File Libraries

  • Open Asset Import: The Open Asset Import Library can read a variety of 3D file formats such as COLLADA (often .dae), Blender3D native files (.blend), 3DS (.3ds), Wavefront Obj (.obj), and many more.
  • lib3ds: The lib3ds library is for reading 3ds files.

Toolkits that are Layered on top of OpenGL

Many programming interfaces are layered on top of OpenGL, providing rich and varied functionality. Not all can interoperate.

Scene graphs

A scene graph is a layer on top of OpenGL that manages objects, their transforms in the world, and various other concepts.

Open Scene Graph 
This scene graph works on all Windows platforms, OSX, GNU/Linux, IRIX, Solaris and FreeBSD.
OpenSG 
It's a scene graph which works on IRIX, Windows and Linux.
Gizmo3D 
This scene graph works on all Windows platforms, OSX, GNU/Linux, and IRIX.
Open Inventor - by VSG 
Object-oriented scene graph API. Commercial implementation. Supports Windows, Linux, OSX.

Graphics engine

A graphics engine is higher level than a scene graph, as it manages all aspects of rendering. Shaders, image resource management, etc.

Crystal Space
Irrlicht
Ogre3D

Game engines/toolkits

Game engines are even higher level. They provide not only a graphics engine, but all of the ancillary structures needed to make a game. Entity concepts, physics control, etc.

Panda3D
A C++ 3D game engine with Python bindings.
Delta3D
Game engine based on Open Scene Graph and ODE.
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. Its primary focus is on games, although not limited for that usage only.

Other

Equalizer
A crossplatform framework for the development and deployment of parallel OpenGL applications for large scale graphics clusters and multi-GPU workstations.
PixelLight
An open-source cross-platform framework using OpenGL.
OGLplus
An open-source header-only library which implements a thin object-oriented facade over the OpenGL (version 3 and higher) C-language API. It provides wrappers which automate resource management and make the use of OpenGL in C++ safer and easier.

Sound or Audio Libraries

OpenAL 
OpenAL stands for Open Audio Library. It is maintained by people at Creative and nVidia and users. Multi OS support (Win, Linux, Mac OSX). The library has a OpenGL like syntax so it is easy to use. Closed source and open source portions. Access to special SoundBlaster features through extensions.
OpenAL Soft
OpenAL Software Renderer.
OpenAL Audio Framework
OpenAL based Audio Framework.