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:
- 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.
- 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.
|