table of contents
SoXtGLWidget(3IV)() | SoXtGLWidget(3IV)() |
NAME¶
SoXtGLWidget — wrapper around GLwMDraw for OpenGL rendering in a motif widget
INHERITS FROM¶
SoXtComponent > SoXtGLWidget
SYNOPSIS¶
#include <Inventor/Xt/SoXtGLWidget.h>
Methods from class SoXtGLWidget:
void setBorder(SbBool onOrOff)
SbBool isBorder() const
virtual void setDoubleBuffer(SbBool onOrOff)
SbBool isDoubleBuffer()
Window getNormalWindow()
Window getOverlayWindow()
GLXContext getNormalContext()
GLXContext getOverlayContext()
Widget getNormalWidget()
Widget getOverlayWidget()
virtual void setNormalVisual(XVisualInfo *vis)
XVisualInfo * getNormalVisual()
virtual void setOverlayVisual(XVisualInfo *vis)
XVisualInfo * getOverlayVisual()
void setDrawToFrontBufferEnable(SbBool enableFlag)
SbBool isDrawToFrontBufferEnable() const
Methods from class SoXtComponent:
virtual void show()
virtual void hide()
SbBool isVisible()
Widget getWidget() const
SbBool isTopLevelShell() const
Widget getShellWidget() const
Widget getParentWidget() const
void setSize(const SbVec2s &size)
SbVec2s getSize()
Display * getDisplay()
void setTitle(const char *newTitle)
const char * getTitle() const
void setIconTitle(const char *newIconTitle)
const char * getIconTitle() const
void setWindowCloseCallback(SoXtComponentCB *func,
void *data = NULL)
static SoXtComponent * getComponent(Widget w)
const char * getWidgetName() const
const char * getClassName() const
DESCRIPTION¶
This abstract base class provides a C++ wrapper around the GLwMDraw widget. It allows OpenGL rendering to be performed within a motif widget and is used by the SoXtRenderArea. SoXtGlWidget uses a form widget around two separate GLwMDraw widgets (one for single and one for double buffering), with routines to return the appropriate windows.
Subclasses only need to redefine the redraw() routine for rendering and processEvent() routine if they are interested in receiving X events.
METHODS¶
void setBorder(SbBool onOrOff)
SbBool isBorder() const
Show and hide the border around the glx widgets (thickness 3). Default is no
border (FALSE). (The SoXtRenderArea subclass defaults turns the
border on by default.)
virtual void setDoubleBuffer(SbBool onOrOff)
SbBool isDoubleBuffer()
Routine which dynamically changes between single and double buffering. Default
is double buffer off. (The SoXtRenderArea subclass makes it double
buffer by default.)
Window getNormalWindow()
Window getOverlayWindow()
GLXContext getNormalContext()
GLXContext getOverlayContext()
Widget getNormalWidget()
Widget getOverlayWidget()
Get the current normal and overlay GLX windows, contexes and widgets, which
are needed as arguments to glXMakeCurrent() when doing drawing in the normal
or overlay planes.
Note: These should not be cached by users because they will change as single/double buffering changes.
virtual void setNormalVisual(XVisualInfo *vis)
XVisualInfo * getNormalVisual()
virtual void setOverlayVisual(XVisualInfo *vis)
XVisualInfo * getOverlayVisual()
Specify exactly what the visual should be for the normal and overlay window.
This allows the user to create all possible visuals supported by OpenGL. The
XVisualInfo structure should be a valid OpenGL visual returned by
glXChooseVisual(). This structure will be copied by the
SoXtGLWidget; the application is responsible for freeing the visual
info with XFree() when done. (The methods for setting the visual are
virtual so that derived classes can know when the visual is changing.)
void setDrawToFrontBufferEnable(SbBool enableFlag)
SbBool isDrawToFrontBufferEnable() const
Inventor 2.1 changed the behavior of double buffered windows to redraw
temporary to the front buffer when an expose event is received or when a new
sceneGraph() is set on an SoXtRenderArea. This does not apply for general
interactive rendering. The idea is that it is better to see something redraw
(especially if it is slow) than to see garbage in the window (in the expose
case) or an old invalid scene graph (in the SoXtRenderArea::setSceneGraph()
case).
This API enables you to turn this functionality OFF if for some reason you are unable to prevent repeated expose from causing a redraw (which is bad and should be fixed, as it gets worse for large scenes). This will be the case for example if you can't create a pulldown menu in the popup planes.
NOTE: this api might be removed in some future releases and is only intended as a porting help for Inventor 2.0 to 2.1
SEE ALSO¶
SoXtComponent, SoXtRenderArea