Visualization future works

Forums: 

I have seen the roadmap for the future works in visualization project, but I haven't understood right the points:

- Improvement of "immediate mode" behavior
- OpenGL-based rubber band to replace the application-level implementations based on windows system API.

Can you explain them with more details, and provide for example some real cases?

Thanks.

Kirill Gavrilov's picture

- Improvement of "immediate mode" behavior

"Immediate mode" is actually name of old functionality in OCCT, which allowed "immediate" rendering like old GL functions glBegin()/glEnd() without delay - the object has been rendered exactly at the place where command has been called, not at V3d_View::Redraw() call.

This scheme has been withdrawn some time ago:
http://git.dev.opencascade.org/gitweb/?p=occt.git;a=commitdiff;h=679ecde...

However one most interesting feature has been kept - rendering directly to front buffer without re-rendering of entire scene. Now these special presentations managed in more robust way and rendered within dedicated loop in V3d_View::RedrawImmediate().

The main benefit is performance. Immediate mode minimize delay between rendering and user actions, such as mouse movement, even in case of complex scene. There would not be any benefit if hardware renders main scene with sufficient performance 60+ FPS, but when FPS goes low - the difference become noticeable.

Currently there is only one way to see this mode in action - in local selection. The target is to make this functionality easier to use for other purposes (like rubber-band selection) and improve it (use FBO instead of rendering directly to Front buffer, optional copying of Depth buffer).

- OpenGL-based rubber band to replace the application-level implementations based on windows system API.

Rectangular selection within 3D viewer is wide-spread used feature. However there is no unified way to display rubber-band using OCCT (although several ways might be found for doing this, and used by some applications based on OCCT). Traditionally window API functions (WinAPI, Qt, Xlib) are used for this purpose instead, which leads to inconsistency and artifacts in some cases.

It is proposed to render rubber-band directly by OCCT viewer in Draw Harness and Samples. Moreover it is proposed to render rubber-band using Immediate mode feature to provide fine feedback with minimum delays.