Visualization Library

Your personal 3D visualization expert - info@visualizationlibrary.com
Home Download Documentation Screenshots Resources

Introducing Visualization Library

Visualization Library is an open source C++ middleware for 2D/3D graphics applications based on OpenGL 2.1, designed to develop portable applications for the Windows XP, Windows Vista and Linux/X11 operating systems.


Visualization Library can be especially useful in the following areas:
  • 3D/2D Scientific Visualization
  • Virtual Reality
  • Augmented Reality
  • Visual Simulation
  • Data Visualization
  • Presentations
  • Multimedia applications
  • Special effects
  • 3D/2D games
Visualization Library is a 3D/2D graphics rendering middleware and not a 3D engine or a game engine, it is intended to be the base upon which such applications (among many others) can be developed.

Your feedback is very important to make Visualization Library a better and more reliable solution, if you have questions, bug reports, comments or suggestions to give please feel free to use the feedback form or contact me at info@visualizationlibrary.com.

Visualization Library's design and key features

  • Developed in Standard C++ using STL, RTTI, Boost, Design Patterns
  • Portable across Windows XP, Windows Vista, Linux/X11
  • Minimalistic, fast, memory-efficient, professional, reliable
  • User-friendly APIs and debug-friendly behaviour
  • Designed to be a highly efficient thin layer on top of OpenGL

    Being a thin layer over OpenGL, Visualization Library not only provides the developer with a generic, fast and light 3D/2D framework suitable for multiple purposes but also exposes the programmer to a familiar API. In fact, most of the OpenGL mechanisms are mapped in an intuitive way on Visualization Library's API, maximizing the value of the OpenGL developer's know-how.

  • Developed for today's and tomorrow's hardware:

    Visualization Library's design is based on features such as: Frame Buffer Objects, Multiple Render Targets, OpenGL Shading Language, Geometry Shaders, Pixel Buffer Objects, Vertex Buffer Objects etc. Even so the library is fully compatible with OpenGL 1.1 class hardware.

  • Designed for OpenGL 2.1 but with OpenGL 3 and OpenGL ES in mind:

    Many legacy features like accumulation buffer, edge flags, indexed rendering, feedback mode, picking mode etc. have been removed since they can be replaced with more modern techniques and special attention has been paid in order to make Visualization Library's design neater and closer to OpenGL ES and OpenGL 3.

  • GUI independent

    Like OpenGL, Visualization Library does not depend or rely on any GUI library. It is the user's responsibility to provide an adequate OpenGL context on which Visualization Library operates. However, several sample implementation of GUI bindings are provided to further simplify the development process.

  • Non direct multithreading support

    Like OpenGL, Visualization Library does not provide at the moment special multithreading support or a multithreading library. It is the user's responsibility to take care of the various aspects involved in the development of a multithreaded or distributed application. However, Visualization Library have been designed to minimize multithreading-related issues and provides a special "render stream" mechanism which helps the development of applications performing multiple simultaneous renderings. If you are seriously interested in multithreading programming you probably want to have a look at Intel® Threading Building Blocks (Intel® TBB).

  • Excellent documentation as a primary feature

    The time (and with it the energies and the money) needed to gather the required know-how to deal with non properly documented open source projects can make a seemingly free solution very pricy at the end of the day.

    For this reason Visualization Library's documentation is considered a top priority to help its accessibility.

    Documentation is essential also for other two key aspects: the potential user can estimate on time if the library fits or not to a particular purpose (typically a difficult task for the average open source project) and helps the project's architecture and design remain as simple and clean as possible thanks to a wider feedback from the community.

Visualization Library and OpenGL

Visualization Library's aim is to help the OpenGL programmer by providing a versatile and reusable set of tools that boost the project's development and ease the application's life cycle. By adopting Visualization Library instead of plain OpenGL the developer is immersed in a fully C++ object-oriented framework which provides a safer, quicker and more intuitive way of managing common OpenGL tasks. The power of the object-oriented paradigm is especially evident when applied to complex projects or when using advanced OpenGL features such as OpenGL Shading Language, Frame Buffer Objects, Multiple Render Targets, multiple rendering pipelines, Vertex and Pixel Buffer Objects, geometry multi instancing and so on, whose intricacy and power can be easily overwhelming if not properly handled.

Visualization Library not only delivers to the developer the potential of OpenGL with a set of intuitive tools but also adds many higher level features and services that are not part of OpenGL or that are not directly supported by it. Among these features you will find:

  • KdTree/AABB frustum culling
  • Billboards
  • Shader and geometrical LOD management
  • LOD enabled multipassing
  • Shader graph optimized sorting for faster renderings
  • Intuitive transform tree management
  • Automatic sorting of transparent objects
  • OpenGL extensions management via the well-known GLEW library
  • Powerful math library including double, float and integer vector, matrix and quaternion classes
  • Image/textures loading and saving
  • Advanced multilingual font and text rendering
  • Trackball and FPS-style manipulators
  • Mesh loading
  • Geometrical primitives like spheres, cones, toruses, boxes etc.
  • Automatic normal computation of geometrical objects
  • Easy shader and geometrical data multi instancing
  • Automatic VBO / Vertex Array usage depending on the hosting hardware
  • Simple screenshot system that works from any color/renderbuffer
  • ... and much much more. See the documentation for more details.

Visualization Library's current feature set

Even if this is the very first alpha release of the library it includes most of the features intended for the final release:

Visualization Library Alpha 1, Sojourner [released 7th May 2008]
  • Designed around OpenGL 2.1, FBOs and MRT
  • OpenGL Shading Language 1.20
  • Supported compilers: Visual Studio 8, Visual Studio 9, MinGW, Linux GCC
  • Supported platforms: Windows XP, Windows Vista, GNU/Linux/X11
  • Powerful shader-tree based architecture with inheritance
  • Real automatic managment and sorting of transparent objects
  • Automatic Render states sorting to boost performances
  • Automatic lazy render states application to boost performances
  • Automatic OpenGL extensions detect and management
  • Vertex Buffer Objects
  • Frame Buffer Objects
  • Multiple Render Target
  • Pixel Buffer Objects
  • Math library based on the OpenGL Shading Language standards including vector, matrix, quaternion classes and many GLSL functions
  • Intuitive clipping planes management
  • Positional, directional and spot lights
  • Texturing:
    • 1D/2D/3D textures
    • Cubemaps
    • Multitexturing
    • Mipmapping
    • Compressed Textures
    • Anisotropic Filtering
    • Automatic texture coordinate generation
    • Texture combiners
  • Point sprites
  • Geometrical LOD
  • Shader LOD
  • Axis-aligned and spherical billboards
  • Multipassing with LOD
  • Highly efficient KdTree/AABB frustum culling compatible with customized culling techniques
  • Native Image class supporting DDS, TIFF, TGA, BMP out of the box
  • Image read/write from/to color/renderbuffers
  • Multilingual FreeType and Unicode based advanced font rendering engine
  • Camera and object manipulators: trackball, FPS-style
  • Geometrical primitives
  • Natively supported mesh file formats: 3DS, PLY, AC3D, MD2
  • SDL and FreeGLUT sample GUI bindings

Development status and future directions

Visualization Library Alpha 2, Phoenix [scheduled for August 2008, work in progress... ]
  • Geometry Shaders
  • Isosurface extraction using Marching Cubes and Marching Tetrahedra
  • COLLADA support
  • OBJ support
  • Trolltech's Qt4 GUI bindings
  • Microsoft's Windows Forms C++ bindings
  • Win32 GUI bindings
  • Display lists support
  • Massive performance improvements
  • More demos and tests
Visualization Library Alpha 3 / Beta 1, Spirit [scheduled for November 2008]
  • Geometrical and analytical picking/intersections
  • Some kind of terrain rendering system
  • Better special effects support
  • 3D widgets and manipulators
  • Image class improvements, 1D/2D/3D sampling functions, JPG and PNG formats support
  • Better multilingual and text rendering support
  • Generalized file IO system: disk, ram, Zip and HTTP streaming
  • ActiveX control
  • Resource management
Visualization Library Beta 2, Opportunity [scheduled for October 2008]
  • bug fixes, documentation, a minimalistic collection of common GLSL shaders, textures and 3D objects

The final release "Visualization Library Lite" is planned to be available by the end of 2008 / beginning of 2009.

OpenGL ES and OpenGL 3 support and bindings to other languages other than C++ are all planned for the next major releases of Visualization Library.

Licensing

Visualization Library is distributed under a dual licensing model:

  1. GNU GPL 3 license: for free and open source projects, which in simple words means that you can use Visualization Library for free and without royalties as long as your application is open source, that is, compatible with the GNU GPL 3 license.
  2. Commercial License: for proprietary and commercial projects that are not compatible with the GNU GPL 3 license. For more information write to info@visualizationlibrary.com.
NOTES:
  • The open source edition and the commercial edition of Visualization Library have the same features and support the same platforms.
  • You need a Commercial License before you start the development of proprietary software.
  • You are not allowed to include in a proprietary software code developed using the open source edition of Visualization Library.

Professional Support

For professional support, consultancy or custom solution development please use the following contact: support@visualizationlibrary.com.





Professional Support - support@visualizationlibrary.com

Visualization Library - info@visualizationlibrary.com

Visualization Library and Visualization Library website are Copyright © 2005-2008 Michele Bosi VAT IT 02791110543