From K-3D

Jump to: navigation, search

For updating all of the OpenGL displays (viewports), the SDK provides the k3d::gl::redraw_all() function. The first form schedules an update, and returns immediately:

k3d::gl::redraw_all(document, k3d::gl::irender_engine::ASYNCHRONOUS);

... in this case, all viewports associated with the given document will be redrawn the next time the UI is idle. This should be used in nearly all cases for efficiency, since the viewports will only be redrawn once no matter how many times redraw_all() is called.

In certain special cases, you may want to ensure that all viewports have been redrawn before the call returns:

k3d::gl::redraw_all(document, k3d::gl::irender_engine::SYNCHRONOUS);

... this is only of use in situations where you want to take control of the display and force display updates without user input, e.g. when creating a render job.

Now that you know how to use redraw_all() ... don't use it. The Visualization Pipeline has been carefully designed so that nodes automatically request screen updates when they are modified. If you are working in the UI layer and modifications to the document don't trigger an update, this is almost certainly a problem with the implementation of one or more nodes. Any calls you may run across in the UI layer are suspect.

Personal tools