Related toolkits and APIs: Difference between revisions
(move GLAUX to bottom of image loading libraries (due to strongly discouraged usage)) |
JeffKhronos (talk | contribs) |
||
(29 intermediate revisions by 13 users not shown) | |||
Line 33: | Line 33: | ||
; [http://www.sfml-dev.org SFML] | ; [http://www.sfml-dev.org SFML] | ||
: A cross-platform multimedia library with a C++ API. Supports creating a core OpenGL context. | : A cross-platform multimedia library with a C++ API. Supports creating a core OpenGL context. | ||
; [http://ecere.org/ Ecere SDK] | |||
: Provides rendering APIs for OpenGL, OpenGL ES and DirectX, 3D math and concepts like cameras, windowing and GUI widget library, wrapped in a compiler and IDE for its own streamlined "eC" language that cross-compiles to desktop, mobile and web platforms. | |||
| style="width: 33%;" | | | style="width: 33%;" | | ||
Many [http://en.wikipedia.org/wiki/Widget_toolkit widget toolkits] have the ability to create OpenGL windows, but their primary focus is on being widget toolkits. | Many [http://en.wikipedia.org/wiki/Widget_toolkit widget toolkits] have the ability to create OpenGL windows, but their primary focus is on being widget toolkits. | ||
; [http://www.fltk.org/ FLTK] | ; [http://www.fltk.org/ FLTK] | ||
: A | : A fast and light-weight cross-platform C++-based widget library that is tightly integrated with OpenGL. It includes a graphical UI editor (fluid) that makes development easy and efficient. It is used in Bjarne Stroustrup's book "Programming - Principles and Practice Using C++". | ||
; [http://qt-project.org/ Qt] | ; [http://qt-project.org/ Qt] | ||
: A C++ toolkit which abstracts the Linux, MacOS X and Windows away. It provides a number of OpenGL helper objects, which even abstract away the difference between desktop GL and OpenGL ES. | : A C++ toolkit which abstracts the Linux, MacOS X and Windows away. It provides a number of OpenGL helper objects, which even abstract away the difference between desktop GL and OpenGL ES. | ||
; [http://www.wxwidgets.org/ wxWidgets] | ; [http://www.wxwidgets.org/ wxWidgets] | ||
: A C++ cross-platform widget toolkit. | : A C++ cross-platform widget toolkit. | ||
; [https://github.com/sp4cerat/Game-GUI Game GUI] | |||
: An OpenGL based C++ widget toolkit with skin support and integrated window manager for games. | |||
|} | |} | ||
Line 51: | Line 55: | ||
; [http://glew.sourceforge.net/ GLEW] | ; [http://glew.sourceforge.net/ GLEW] | ||
: An OpenGL loading library for Windows, Linux, Mac OS X, FreeBSD, Irix, and Solaris. | : An OpenGL loading library for Windows, Linux, Mac OS X, FreeBSD, Irix, and Solaris. | ||
; [https://github.com/ | ; [https://github.com/skaslev/gl3w gl3w] | ||
: An OpenGL loading library, focusing on OpenGL3/4 Core context loading for Windows, Linux and FreeBSD. | : An OpenGL loading library, focusing on OpenGL3/4 Core context loading for Windows, Linux, Mac OS X and FreeBSD. | ||
; [https:// | ; [https://github.com/anholt/libepoxy libepoxy] | ||
: A tool for generating OpenGL loaders | : An OpenGL loading library which crashes with an error message instead of segfaulting if you do something wrong. | ||
; [https://github.com/Dav1dde/glad glad - Multi-Language GL/GLES/EGL/GLX/WGL Loader-Generator based on the official specs.] | |||
: A tool (with a web-service) for generating OpenGL, OpenGL ES, EGL, GLX and WGL headers (and loaders) based on the official XML specifications. | |||
== Utilities == | == Utilities == | ||
Line 64: | Line 70: | ||
* [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). | ||
* [ | * [https://sites.google.com/site/openimageio/home OIIO]: OpenImageIO (OIIO) is a library for reading and writing images, and a bunch of related classes, utilities, and applications. There is a particular emphasis on formats and functionality used in professional, large-scale animation and visual effects work for film. OpenImageIO is used extensively in animation and VFX studios all over the world, and is also incorporated into several commercial products. | ||
* [http://www.g-truc.net/project-0024.html 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. | * [http://www.g-truc.net/project-0024.html 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. | ||
* [https://github.com/hpicgs/glraw glraw]: glraw provides a command-line tool that converts image files into raw files, directly containing plain OpenGL texture data (also allows for customizable file header). Thus, it allows for fast texture loading. It is licensed under the MIT license. | * [https://github.com/hpicgs/glraw glraw]: glraw provides a command-line tool that converts image files into raw files, directly containing plain OpenGL texture data (also allows for customizable file header). Thus, it allows for fast texture loading. It is licensed under the MIT license. | ||
Line 73: | Line 79: | ||
* [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. | * [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. | ||
* [https://github.com/Cincinesh/tue Tuesday]: The Tuesday C++ Vector Math and SIMD Library is a library of template classes and math functions with a focus on physics and graphics applications. It provides data types commonly used in games and other simulations such as vectors, quaternions, and matrices, SIMD intrinsic wrapper classes completely separate from (but compatible with) the other types, operator overloads for combining and manipulating all these types, as well as some other common mathematical functions. It was written to match the style of the C++ Standard Library and uses modern C++ features (i.e., C++14) extensively. | |||
* [http://github.com/recp/cglm cglm]: CGLM ( OpenGL Mathematics for C ) is optimized math library for C. There are inline and non-inline versions of functions. Most operations are optimized with SIMD instructions. There are many convenient functions to make code more readable and make development process easy. Library is in active development and you may see many new features by time. | |||
=== 3D File Libraries === | === 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://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. | * [http://code.google.com/p/lib3ds/ lib3ds]: The lib3ds library is for reading 3ds files. | ||
* [http://github.com/recp/assetkit AssetKit (In Progress)]: 3D asset importer/exporter/util library based on COLLADA/glTF specs. Its main focus is COLLADA and glTF, it will full support COLLADA 1.4, 1.4.1, 1.5+ and glTF formats plus it will support some other formats as extra library (extension library). | |||
== Toolkits that are Layered on top of OpenGL == | == Toolkits that are Layered on top of OpenGL == | ||
Line 96: | Line 105: | ||
; [http://irrlicht.sourceforge.net/ Irrlicht] | ; [http://irrlicht.sourceforge.net/ Irrlicht] | ||
; [http://www.ogre3d.org/ Ogre3D] | ; [http://www.ogre3d.org/ Ogre3D] | ||
; [http://visualizationlibrary.org Visualization Library]: Visualization Library is a C++ middleware for high-performance 2D and 3D graphics applications based on OpenGL 1.x-4.x, supporting Windows, Linux and Mac OS X. | |||
| | | | ||
; [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. | ; [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. | ||
; [http://panda3d.org/ Panda3D]: A C++ 3D game engine with Python bindings. | ; [http://panda3d.org/ Panda3D]: A C++ 3D game engine with Python bindings. | ||
|} | |} | ||
Line 105: | Line 114: | ||
; [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.equalizergraphics.com/ Equalizer]: A crossplatform framework for the development and deployment of parallel OpenGL applications for large scale graphics clusters and multi-GPU workstations. | ||
; | ; https://github.com/PixelLightFoundation/pixellight 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. | ; [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://www.audio-framework.spieleprogrammierung.net/ OpenAL Audio Framework]: OpenAL based Audio Framework. | ; [http://www.audio-framework.spieleprogrammierung.net/ OpenAL Audio Framework]: OpenAL based Audio Framework. | ||
[[Category:Related Toolkits & APIs]] | [[Category:Related Toolkits & APIs]] |
Latest revision as of 22:33, 1 February 2021
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.
These toolkits are designed specifically around creating and managing OpenGL windows. They also manage input, but little beyond that.
|
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 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, Mac OS X and FreeBSD.
- libepoxy
- An OpenGL loading library which crashes with an error message instead of segfaulting if you do something wrong.
- glad - Multi-Language GL/GLES/EGL/GLX/WGL Loader-Generator based on the official specs.
- A tool (with a web-service) for generating OpenGL, OpenGL ES, EGL, GLX and WGL headers (and loaders) based on the official XML specifications.
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
- 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).
- OIIO: OpenImageIO (OIIO) is a library for reading and writing images, and a bunch of related classes, utilities, and applications. There is a particular emphasis on formats and functionality used in professional, large-scale animation and visual effects work for film. OpenImageIO is used extensively in animation and VFX studios all over the world, and is also incorporated into several commercial products.
- 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.
- glraw: glraw provides a command-line tool that converts image files into raw files, directly containing plain OpenGL texture data (also allows for customizable file header). Thus, it allows for fast texture loading. It is licensed under the MIT license.
- 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.
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.
- Tuesday: The Tuesday C++ Vector Math and SIMD Library is a library of template classes and math functions with a focus on physics and graphics applications. It provides data types commonly used in games and other simulations such as vectors, quaternions, and matrices, SIMD intrinsic wrapper classes completely separate from (but compatible with) the other types, operator overloads for combining and manipulating all these types, as well as some other common mathematical functions. It was written to match the style of the C++ Standard Library and uses modern C++ features (i.e., C++14) extensively.
- cglm: CGLM ( OpenGL Mathematics for C ) is optimized math library for C. There are inline and non-inline versions of functions. Most operations are optimized with SIMD instructions. There are many convenient functions to make code more readable and make development process easy. Library is in active development and you may see many new features by time.
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.
- AssetKit (In Progress): 3D asset importer/exporter/util library based on COLLADA/glTF specs. Its main focus is COLLADA and glTF, it will full support COLLADA 1.4, 1.4.1, 1.5+ and glTF formats plus it will support some other formats as extra library (extension library).
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 | Graphics Engines | Game Engines/Toolkits |
---|---|---|
|
|
Other
- Equalizer
- A crossplatform framework for the development and deployment of parallel OpenGL applications for large scale graphics clusters and multi-GPU workstations.
- https://github.com/PixelLightFoundation/pixellight 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 Audio Framework
- OpenAL based Audio Framework.