Vrui 2.6-xxx Release Notes
This page lists major changes between Vrui versions 2.4-xxx and 2.6-yyy, both for users and programmers. As always, all changes are listed in detail in the HISTORY file in the package root directory.
User-Level Changes
- The SceneGraphViewer vislet now has a -physical command line option to render scene graphs in physical space, i.e., unaffected by navigation. This can be used to add decorations or, later, interactive components to a Vrui environment itself.
- Added support for next-generation Wii Remote Plus to VR device driver.
- Added a new Filming vislet to support shooting video or photographs inside immersive environments with correct perspective.
Programmer-Level Changes
- API change: removed defaultCloseCallback in GLMotif::PopupWindow. Code using a construct like window->getCloseCallbacks().add(window,&GLMotif::PopupWindow::defaultCloseCallback) to automatically destroy a popup window when the close button is clicked must be changed to either window->getCloseCallbacks().add(&GLMotif::PopupWindow::deleteFunction) to destroy the popup window, or window->getCloseCallbacks().add(&GLMotif::PopupWindow::popDownFunction) to pop it down, or the equivalent convenience functions window->deleteOnClose() or window->popDownOnClose().
- Along the same lines, there is a new GLMotif::FileSelectionDialog::deleteOnCancel() convenience method that destroys a file selection dialog when the "Cancel" button is selected.
- API change: new vislet initialization procedure:
- All vislets start in disabled state.
- Added enable() and disable() methods to Vrui::VisletManager.
- Each vislet's enable() methods is called once immediately before Vrui's main loop starts.
- Each active vislet's disable() method is called immediately after Vrui's main loop ends.
- API change: changed semantics of Vrui::getNumWindows() and <Vrui::getWindow(int windowIndex) functions. In a cluster environment, instead of only returning a count of windows on the local node, Vrui::getNumWindows() returns the total number of windows on all cluster nodes. Vrui::getWindow(int windowIndex) takes a window index in the complete window list, but returns NULL pointers for windows that are on other cluster nodes.
- Created new class Cluster::ThreadSynchronizer to help managing threads among a cluster where nodes execute different code paths and do not create the same number of threads in the same order. This is essential to make intra-cluster communication work reliably.
- Vrui's build system now supports debug and non-debug versions of the toolkit and applications besides each other. As before, debug information is added if DEBUG=1 is passed on make's command line.
- Fixed Vrui build system for Ubuntu 12.10 ("Quantal Quetzal").
- Removed code overhead when creating custom tools to communicate simple button or keyboard events to a Vrui application. Applications can register events by calling addEventTool("Event Name",toolParentClass,this,&Application::callbackMethod,eventId) to register a specific callback, or simply addEventTool("Event Name",toolParentClass,eventId) to handle events via the virtual eventCallback method. Users can then bind such events to arbitrary buttons or keys using the normal tool creation mechanism. Detailed examples can be found in VruiEventToolDemo in the ExamplePrograms directory.