Portal:Development Tools

From OpenGL Wiki
Revision as of 00:06, 27 July 2013 by Alfonse (talk | contribs) (Removed stub.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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.

SDKs

V · E

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.

OpenGL setup

Window Creation

V · E

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.

FreeGLUT
A GLUT-compatible cross-platform windowing system. It is intended for demo applications.
GLFW
A cross-platform windowing system. It is aimed mainly at the needs of games.
GLUT
Very old, do not use.

Several "multimedia libraries" can create OpenGL windows, in addition to input, sound and other tasks useful for game-like applications.

Allegro version 5
A C-based cross-platform multimedia library focused on game development. Supports core OpenGL context creation.
SDL
A C-based cross-platform multimedia library. Version 1.2 does not support core OpenGL context creation, but version 2.0 will.
SFML
A C++-based cross-platform multimedia library. Supports creating a core OpenGL context.

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

FLTK
A small C-based widget library.
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.
wxWidgets
A C++ cross-platform widget toolkit.

OpenGL Loading Library

V · E

OpenGL loading libraries automate the process of loading OpenGL functions.

Name Version Description
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

File processing

Image Loading

V · E

These tools are for reading image file formats. Not all of them support loading directly into OpenGL Textures; some are pure image loaders.

Name Description
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.

Mesh Loaders

V · E

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.

Name Description
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.

Utilities

Math Libraries

V · E

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.

Name Description
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.

Debugging Tools

V · E

These are libraries or applications that aid in debugging OpenGL programs. Some are platform-neutral, while others are platform-specific.

Platform-neutral:

glIntercept
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.
gDebugger
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.

Platform-specific debuggers:

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.

Engines

Scene Graphs

V · E

A scene graph is a library that manages the placement of objects in a scene. Many of them support lights and other object types.

Name Supported platforms
Gizmo3D Windows, OSX, GNU/Linux, iOS, Android, IRIX
Open Scene Graph Windows, OSX, GNU/Linux, IRIX, Solaris, FreeBSD
OpenSG Windows, IRIX, Linux
Open Inventor

Commercial

Windows, Linux, OSX.

Rendering Engines

V · E

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.

Game Engines

V · E

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.

Name Description
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.