Home Download Gallery Documentation Developer

# Change Log

## Mar 13th 2022 - 2.8.0

Bug fixes or improvements

- Updates for Qt6 compatibility (thanks Björn).

## Nov 17th 2019 - 2.7.2

Bug fixes or improvements

- Fix includes in `camera.h` (thanks Gianluca and Laurent).

## Nov 17th 2017 - 2.7.1

Bug fixes or improvements

- Fix deprecated message in constructor. Fixes #39 (thanks Carsten).

## Jun 14th 2017 - 2.7.0

This version has a minimum requirement of Qt version 5.4.
Changes in the API

- `QGLViewer` extends `QOpenGLWidget` instead of the deprecated `QGLWidget` (huge thanks to Gianluca).
- Although there are minor differences between the two classes, the switch should be mostly invisible.

  Using `update()` instead of `updateGL()` is one of them

  The `renderText` methods were backported to maintain backward compatibility.

  Some overloaded constructors (using a `QGLFormat` or a sharedWidget) are deprecated since they have no equivalent.

## Jul 16th 2016 - 2.6.4

Bug fixes or improvements

- Add a `-qt4` or `-qt5` suffix to library file name on Linux. Fixes #18 (thanks Laurent).
- Edit the .pro of the examples to support the debug version of the library on Windows. Fixes #23 (thanks naubry).
- `contribs` examples no longer build by default. Relied on deprecated GL calls (Fixes #31)
- Add `QMAKE_MAC_SDK` to fix compilation on Mac with recent XCode versions
- Fix compilation errors on ARMv7, when `qreal` is defined to `float` (Pull request from lrineau)

## Jul 16th 2015 - 2.6.3

Bug fixes or improvements

- Add dependency to native OpenGL drivers on Windows platform. No longer implicit since ANGLE is an alternative in Qt 5.5 (thanks Andrea and Laurent).
- The library is now always built in the `QGLViewer` directory. The examples' pro files are simplified and more robust.
- Add some `libGlu` dependency in examples that rely on it (thanks Brice).

## Jan 23nd 2015 - 2.6.2

Bug fixes or improvements

- Fix `qreal` issue in `Quaternion::FromRotationMatrix()` (thanks Che, again).

## Jan 22nd 2015 - 2.6.1

Bug fixes or improvements

- Bug fix in `Camera::pointUnderPixel()` introduced by the switch to qreal (thanks Che).
- terrain contrib example is deprecated.

## Nov 17th 2014 - 2.6.0

Changes in the API

- The entire API now consistently uses the `qreal` (i.e `double`) type for floating point numbers.
  This should not break code compatibility since types will mostly get automatically converted.
  Update your code if you use one of the `getX(qreal & x)` methods, which take a reference as a parameter, and which type needs to be changed to `qreal`.

## Nov 6th 2014 - 2.5.4

Bug fixes or improvements

- Remove `libGLU` dependency on Mac since it conflicts with Yosemite (thanks Hae-Jeong, Federico).
- Fix compilation flags and include warning for Windows compilation (thanks Alexandre, David).
- Fix switch between camera's observer and fly modes (thanks Björn).

## Sept 1st 2014 - 2.5.3

Bug fixes or improvements

- Add `libGLU` dependency on the library for Linux (thanks Tingran).
- Add `algorithm` in VRender to remove VS warnings (thanks Jeffrey).
- Use `std::min/std::max` to fix Visual Studio compilation errors in VRender.
- Fix QFlag error with recent compilers in `saveSnapshot.cpp` (thanks xiaoyi).

## Apr 10th 2014 - 2.5.2

Changes in the API

- Shortcut's `KeyboardAction` enum was made public.
- Camera's `revolveArountPoint` is renamed `pivotPoint`.
- ManipulatedCameraFrame's `flyUpVector` is renamed `sceneUpVector`.
- A new ManipulatedCameraFrame's `setRotatesAroundUpVector` method defines a new rotation mode, where the horizon is preserved.
- Similarly, a new `setZoomsOnPivotPoint` method defines a new zoom behavior.
- New ManipulatedFrame `zoomSensitivity` enables you to tune the effect of a mouse displacement on the zoom.
- New `GLfloat` overrides of Camera's `get..Matrix()` methods.
- Frame's `alignWithAxis` threshold set to 0 (i.e. it will always align).

Bug fixes or improvements

- The Frame's `position()` method is faster and more precise in case there is no `referenceFrame`.
- ManipulatedFrame's default mouse rotation speed has been increased.
- DomUtils error messages improved.
- Added GLU library dependency on Linux platforms (thanks Lynn).

## Feb 12th 2014 - 2.5.1

Changes in the API

- Support for Qt version 2 and 3 has been discontinued. Minimum supported Qt version is now Qt 4.0
- Two new `setMouseBinding` methods take an optional `Qt:Key` argument, indicating that this key has to be pressed to trigger the action. New similar `setWheelBinding` methods.
- Mouse binding getter functions names have been harmonized.
- `setMouseBinding` methods accept only one button, instead of an improbable combination of buttons.
- Refactored include dependencies: you may have to manually include `QGLViewer/manipulatedFrame.h`.
- `QGLViewer`'s `MouseHandler`, `ClickAction` and `MouseAction` enums are now public.
- New `ManipulatedFrame::currentMouseAction()` method.

Bug fixes or improvements

- The `RAP_FROM_PIXEL` click action resets the revolve around point to `sceneCenter` when there is no point under the cursor.
- Fly mode mouse bindings are no longer automatically restored in `restoreStateFromFile`.

## Dec 19th 2013 - 2.5.0

Changes in the API

- All mouse bindings methods now take two parameters (keyboard modifiers and mouse buttons) instead of a combination of these.
- New `clearShortcuts` and `clearMouseBindings` methods reset all bindings.

Bug fixes or improvements

- ClickAction bindings (such as select, triggered by a Shift+Left click) fixed for Qt5.

## Nov 17th 2013 - 2.4.1

Bug fixes or improvements

- Using QWidget's `update()` instead of `updateGL()` for smoother updates.
- Projection and modelView matrix computation is cached for improved performance.
- Full code re-indent using tabs.

## May 25th 2013 - 2.4.0

Bug fixes or improvements

- Support for Qt version 5. (thanks Gennady, Alastair and Laurent).
- Source code is available on github.

## May 24th 2012 - 2.3.17

Bug fixes or improvements

- Compilation of the examples using a framework fixed on Mac.
- Installation as a static library can be configured using PREFIX on Mac too.

## April 10th 2012 - 2.3.16

Bug fixes or improvements

- Added `-lGLU` linked library on Linux when building the examples.

## March 8th 2012 - 2.3.15

Bug fixes or improvements

- Added a QGLViewer prefix so that headers are correctly when using the framework on mac.

## March 2nd 2012 - 2.3.14

Bug fixes or improvements

- Framework is now installed in the user's Library folder on mac (system's library is read-only on Lion)
- Added symbol export for designer plugin on windows.

## February 24th 2012 - 2.3.13

Bug fixes or improvements

- Handle lower case compilation folder names on windows/Qt 4.8.

## February 14th 2012 - 2.3.12

Changes in the API

- `Camera.setPhysicalDistanceToScreen` method has been deprecated. Use `setPhysicalScreenWidth` instead.

Bug fixes or improvements

- Fixed glu include compilation problems with Qt 4.8
- Better documentation for the designer plugin installation

## November 17th 2011 - 2.3.11

Bug fixes or improvements

- Unneeded reference to Qt3 removed from `VRenderInterface` ui file (thanks David).
- `qglviewer.rc` problem when compiling designerPlugin on windows. Again (thanks Dennis)

## June 14th 2011 - 2.3.10

Bug fixes or improvements

- `qglviewer.rc` problem when compiling designerPlugin on windows.
- Warning messages when using Qt3 support on windows.

## December 4th 2010 - 2.3.9

Changes in the API

- `Vec` now using `double` instead of `float`

Bug fixes or improvements

- Much simpler program compilation explanations.
- Simpler and updated windows and unix installation pages.
- Improved examples' `.pro` for a better out-of-the-box compilation using Qt Creator.
- Added missing `qglviewer.rc` and `qglviewer.ico` files in package.

## November 7th 2010 - 2.3.8

Bug fixes or improvements

- `Vec` operations now return `double` instead of `float` to avoid precision issues (thanks Lionel).
- Support for Qt3 signal/slot cw file removed (thanks Nikos).

## October 28th 2010 - 2.3.7

Bug fixes or improvements

- Added Debug and Release dirs in search paths for lib on Win32 minGw.
- Made MinGw also create a debug version of the lib (thanks Eric).
- Warnings in VRender with Visual Studio removed.
- A few missing `double` replacement in `Quaternion` (thanks Pierre and Lionel).
- Application icon added on Windows platforms.

Changes in the API

- New created viewers go in the first available position in `QGLViewerPool()` instead of always being appended (suggester Pierre).

## May 29th 2010 - 2.3.6

Bug fixes or improvements

- Minor fixes to ease the compilation using Qt3 or with gcc 4.3 (thanks Artur).
- Added the `qglviewer.icns` file which was missing from Mac package.
- Use of the `-Wl,-rpath` option eliminates the need for `LD_LIBRARY_PATH` tuning on Linux..
- New `.qch` file available to import documentation into Qt's assistant (suggester Laurent).

## March 1st 2010 - 2.3.5

New features

- Mouse shortcuts displayed in help window use native display for Ctrl/Command/Alt/Option... keys.
- New mouse bindings added on Mac architecture to enable camera translation using the Option key (no right button on the touchpad).

Bug fixes or improvements

- Tuning `DYLD_LIBRARY_PATH` is no longer needed to run the examples on Mac architecture (Linux soon to come).
- Use of `CONFIG += no_keywords` so that the library can be used with Boost.
- Smoother compilation on Mac, now creating a Framework by default. Compilation documentation updated.
- `GL_DEPTH_TEST` disabled before rendering frame rate to fix a weird display on Mac (bugfinder FX).
- The `About` button has been moved to a cleaner new tab in the help window.
- `WIN32` added to default `DEFINES` to fix compilation problems with Visual Studio when using the Intel compiler (bugfinder Jiawen).
- The examples applications now have a nice associated icon (Mac and Windows).
- `restoreStateFromFile` updates camera aspect ratio when loading window's size.

Changes in the API

- The `aboutQGLViewer()` method now displays the help window 'About' tab.

## September 1st 2009 - 2.3.4

Bug fixes or improvements

- Patches for compilation with Qt3 (thanks to Rainer and Florent).

## July 14th 2009 - 2.3.3

New features

- `snapshotToClipboard()` method binded to `Ctrl+C` eases snapshot creation.
- Visual Studio `.vcproj` project files added to `QGLViewer` and examples' directories.

## July 7th 2009 - 2.3.2

New features

- A new dual licensing explanation page.

Bug fixes or improvements

- `printf` debug calls removed. Tested with the future version 4.4 of gcc.
- `domUtils.h` includes fixed (thanks Frederic).
- `Camera::initFromDOMElement` bug fixed (bugfinder Forrester).
- Snapshot rendering bug when using screen coordinates with large image size (tiled rendering) fixed. New `scaledFont()` method to be used with `renderText()`. Bugfinder Jorik.

## October 1st 2008 - 2.3.1

New features

- Exceptions added to the GPL Open Source license to make it compatible with CGAL.
- Although it still works, the compilation with Qt version 2 is no longer supported.
- The x3d example has been removed from the distribution since the x3d library is no longer maintained.

## September 1st 2008 - 2.3.0

New features

- Default package distribution is now based on Qt4.
- A package installer is available for Windows, including the library, pre-compiled examples and full documentation.
- A new compilation with libQGLViewer page explains how to compile your programs with QGLViewer.
- A new overpainting example demonstrates mixing OpenGL and `QPainter` drawing.
- A new cameraLight example shows how to place a light at camera position.
- A new cornerAxis example displays the scene orientation in the lower left corner.

Changes in the API

- A deleted `QGLViewer` is no longer removed from the `QGLViewerPool` (a `null` replaces it) in order to preserve viewer's indexes (used by `stateFileName`) (bug finder Gianluca).
- Unix install no longer features a static version of the library.

Bug fixes or improvements

- All the texts used by the library are now translatable. A french translation is available.
- Visual Studio installation procedure refreshed.
- Includes were modified to satisfy new gcc 4.3 cleaner standards (thanks Artur).
- All examples' warnings under Visual Studio have been fixed.
- Help window spaced and made fully translatable.

## May 29th 2007 - 2.2.6

New features

- The `Camera` now saves and restores its scene center and radius in its XML representation.
- A new `Camera::getModelViewProjectionMatrix` convenient method (suggester Elmar).

Bug fixes or improvements

- Compilation warnings with MSVC 2003 and 2005 fixed.
- Null viewer dimensions no longer cause divisions by 0 (bug finder Elmar).

## January 31st 2007- 2.2.5

Bug fixes or improvements

- 1 pixel shift in `Camera::pointUnderPixel()` fixed (bug finder Aurélien).
- Included file naming changed to follow Qt4 conventions (suggester Maxime).
- Lighting disabled for text drawing in the `screenCoordSystem` example (bug finder Greg).
- Documentation switched to doxygen 1.5 tab style (bug finder Xavier).

## November 28th 2006 - 2.2.4

New features

- A new `DRIVE` MouseAction. Similar to fly, but speed depends on mouse vertical position (suggester Le Thanh).
- A new standardCamera example shows how to customize your `Camera`.

Bug fixes or improvements

- `orthogonalVec()` had problems for some vectors (bug finder David).
- `MOVE_FORWARD` and `MOVE_BACKWARD` behavior improved.
- Double file overwriting question with Qt4 removed.

## May 14th 2006 - 2.2.3

New features

- `Camera::interpolateTo` moves the Camera to a target position.

Changes in the API

- `setSceneCenter` and `setSceneRadius` were made `virtual`.

Bug fixes or improvements

- Problem with constraints on frame hierarchy fixed (thanks Sylvain).
- `unregisterTimer` error mesage fixed (thanks Xavier).
- Spurious brace correctly closed in examples' .pro (thanks Xavier).

## May 14th 2006 - 2.2.2

New features

- Snapshot can be created at an arbitrary size (using image mosaicing) with optional oversampling anti-aliassing.

Bug fixes or improvements

- Problem with `QT3_SUPPORT` under Qt4 fixed (prevented designer plugin creation under windows).

## March 8th 2006 - 2.2.1

New features

- Designer plugin installation directory can now be changed (suggester Markus).

Changes in the API

- Deprecated `setSnapshotFilename` (lowercase n) method (kept for backward source code compatibility) was removed due to ActiveX conflicts (thanks Juergen).

Bug fixes or improvements

- `saveSnapshot` was not recognized as a slot with Qt3 (bug finder Gheorghe).
- Generated snapshots files didn't have the proper `.jpg` extension.
- Animation added to the blobWar example.

## February 8th 2006 - 2.2.0

New features

- `Camera::getFrustumPlanesCoefficients()` function (see the frustumCulling example).
- `Camera::setFromModelViewMatrix()` makes a `Camera` match a given `modelView` matrix (suggester Daria).
- Non-const `Vec::float*()` operator, so that `Vec` parameters can be passed to `float*` filling methods.
- `Quaternion::normalized()` method.
- `Camera::rightVector()` that completes the `viewDirection()` and `upVector()` methods.
- New frustumCulling and blobWar examples.
- In the multiSelect example, the selected set can now be manipulated.

Changes in the API

- `Camera::draw()` method parameters changed. Can now also draw ORTHOGRAPHIC Camera type.
- `Camera::drawCamera()` static method removed. Use `(new Camera())->draw()` instead.
- Z-buffer display has been removed (not supported on many architectures). Code is available in `copyBufferToTexture()`.
- `Quaternion::setFromRotationMatrix` takes a `double` (instead of `float`) parameter for better precision.
- `Frame::referenceFrame()` now returns a `const Frame*` (suggester Xavier).
- `Quaternion::setFromRotatedBase()` renamed `setFromRotatedBasis()`.
- Mouse events are now prioritarily interpreted as `ClickAction` and then passed to the `mouseGrabber()` if no `ClickAction` corresponds (was the inverse).
- `drawAxis()` and `drawGrid()` no longer modify the OpenGL state (suggester Manu).

Bug fixes or improvements

- Bug in `KeyFrameInterpolator` path drawing fixed (bug finder Manuel).
- `Quaternion(from, to)` bug fixed for colinear vectors (bug finder Aurélien).
- `Quaternion::setFromRotationMatrix` patched and made more robust.
- Camera's `zClippingCoefficient` correctly restored when `cameraIsEdited`.
- `Frame::initFromDOMElement` normalizes the orientation.
- This changeLog file was split in two parts (see the archive).
- Download statistics are back.
- Private classes removed from documentation.
- The dvonn example now also compiles with Qt4.

## September 18th 2005 - 2.1.1

Changes in the API

- `snapshotFilename` renamed `snapshotFileName` (uppercased 'N').
- When negative, the `snapshotCounter` is not appended to `snapshotFileName` in automatic mode.

Bug fixes or improvements

- `saveSnapshot(fileName)` no longer opens a file dialog (bug finder Juergen).

## September 14th 2005 - 2.1.0

The library now compiles with Qt version 2, 3 and 4. When enum or function names have been changed in Qt4, the QGLViewer documentation uses their Qt 4 version and gives Qt 2 & 3 translations.

New features

- Support for Qt version 2, 3 and 4.
- Dual licensing : a LGPL version of the library is available for commercial applications.
- `QGLViewer::drawArrow()` method from two points (thanks Sylvain).

Changes in the API

`Qt::ButtonState` (Qt versions 2 & 3) has been split into `Qt::KeyboardModifiers` and `Qt::MouseButtons` in Qt4. Since these are just enums, previous code will still work.

- `playPathStateKey()` and `addKeyFrameStateKey()` were renamed `playPathKeyboardModifiers()` and `addKeyFrameKeyboardModifiers()`.
  Their `int` parameter has been replaced by a type-safe `Qt::KeyboardModifiers`.
- `setHandlerStateKey` renamed `setHandlerKeyboardModifiers`.

Bug fixes or improvements

- `Camera` copy constructor fixed (bug finder Xavier).

## August 10th 2005 - 2.0.1

Bug fixes or improvements

- Bounding box warning when viewing generated EPS snapshots fixed. Thanks Dominik.

## June 24th 2005 - 2.0.0

New features

- Cyril Soler entirely rewrote the VRender vectorial rendering code. Smaller and better ouput files.
- New `QGLViewer::copyBufferToTexture()` to copy the frame buffer in a texture.
- New `Camera::drawCamera()` and `draw()` methods.
- New `QGLViewer::drawArrow()` static method.
- New `QGLViewer::mouseGrabberIsEnabled()` method.
- Copy constructor and `=` operator implemented for `Camera` and `KeyFrameInterpolator` classes.

Changes in the API
The API has been cleaned up and simplified. The documentation has entirely been rewritten.

- Vec

- `address()` deprecated, use `operator const float*` instead.
- `sqNorm()` renamed `Vec::squaredNorm()`.

- Quaternion

- Constructor with half angle removed.
- `randomOrientation` renamed `randomQuaternion`.
- `operator*` now returns a non-const `Quaternion`.

- Frame

- `referenceFrame()` is no longer `const`.
- `setOrientationAxisAngle()` and `Frame::setRotationAxisAngle()` removed.
- `translate(float t[3])` and `Frame::rotate(float q[4])` removed: use `Vec` and `Quaternion` equivalents instead.
- `invert()` and `Frame::worldInvert()` removed: use `inverse()` instead.
- `inverseMatrix()` and `worldInverseMatrix()` removed: use `inverse().matrix()` instead.
- `setReferenceFrame()` emits the `modified()` signal as expected.

- SpinningFrame

- `SpinningFrame` class has been removed. Spinning was integrated in `ManipulatedFrame`.

- ManipulatedFrame

- `spinned` signal renamed `spun`.

- MouseGrabber

- Mouse event method now all take a non-const `Camera` parameter.

- AxisPlaneConstraint

- `float` methods removed: use `Vec` equivalents instead.
- `*Dir()` methods renamed `*Direction()`.

- KeyFrameInterpolator
  - `keyFramePosition()` and `keyFrameOrientation()` removed: use `KeyFrame().position()` and `KeyFrame().orientation()` instead.
  - `finished()` renamed `endReached()`.
- Camera

- Methods with `float` parameter removed. Use their `Vec(x,y,z)` and `Quaternion(q0,q1,q2,q3)` equivalents instead.
- `editCameraPath()` and `cameraPathIsEdited()` removed.
- `float` versions of `getModelViewMatrix` and `getProjectionMatrix` removed. Use `double` equivalents instead.
- Methods using pixel input (`pointUnderPixel()`...) take `QPoint` parameter instead of x and y. Use `QPoint(x,y)` constructor if needed.
- `nbPaths()` removed. Camera now contains an arbitrary number of paths.
- `fitScreenRegion` now takes a `QRect` parameter.
- `getOrthoWidthHeight` made `virtual`.
- `ORTHO` type renamed `ORTHOGRAPHIC`.
- `zNearCoef` and `zClippingCoef` renamed `zNearCoefficient` and `zClippingCoefficient`.
- `setWindowWidthAndHeight` renamed `setScreenWidthAndHeight`.
- `playKeyFramePath, deleteKeyFramePath and resetKeyFramePath` renamed `playPath, deletePath and resetPath`.
- `addKeyFrame` renamed `addKeyFrameToPath`.
- `distanceToScreen()` renamed `physicalDistanceToScreen()`.
- `distanceToZeroParallaxPlane()` renamed `focusDistance()`.
- `IODist` renamed `IODistance`.
- `setCameraFromProjectionMatrix()` renamed `setFromProjectionMatrix()`.

- QGLViewer

- `cameraPathIsEdited` and `editCameraPath` renamed `cameraIsEdited` and `setCameraIsEdited`.
- `EDIT_CAMERA_PATHS` renamed `EDIT_CAMERA` in prevision of a future camera edition.
- `setDrawAxis, setDrawGrid, setDisplayFPS, setDisplayText` renamed `setAxisIsDrawn, setGridIsDrawn, setFPSIsDisplayed, setTextIsEnabled`.
- `float` methods removed. Use `Vec` and `Quaternion` equivalents instead.
- `drawAxis` made `static`.
- `setMouseStateKey` renamed `setHandlerStateKey`.
- `keyFrameKey` renamed `pathKey`, with swapped parameters.
- `playKeyFramePathStateKey` renamed `playPathStateKey`.
- `keyboardAccelerator` (resp. `setKeyboardAccelerator`) renamed `shortcut` (resp. `setShortcut`).
- `select, beginSelection, endSelection` and `postSelection` use `QPoint` instead of `x` and `y`.
- `toggleAnimationMode` renamed `toggleAnimation`.
- `version` syntax in state file changed and is now compared with current version on restoration.
- Destructor now also deletes the `camera()`.
- `connectSignalToAllViewers, disconnectSignalToAllViewers` and `updateGLForAllViewers` removed. Use `QGLViewerPool` insead.
- Keys F1-F12 are binded to camera keyFrameInterpolator indexes 1..12 (was 0..11).

Other modifications:

- `zip` and `tar` files names include release number.
- `rpm` now includes a static version of the library.

Bug fixes or improvements

- `QGLViewer::stateFileName` no longer skips the directory prefix.
- `QGLViewer::drawLight` nicer and fixed.
- WheelEvents now use `fastDraw()`. A final `draw()` is now triggered at a short delay after the last wheel event.

## Previous changeLog

See the previous changeLog (Version 1.2.5 to 1.3.9, July 2002 to April 2005).
Please send any comment, suggestion or problem by e-mail.

Last modified on Sunday, March 13, 2022.