SoQtGLWidget Class Reference
[Qt]

VSG extension Component for OpenGL rendering. More...

#include <Inventor/Qt/SoQtGLWidget.h>

Inheritance diagram for SoQtGLWidget:
SoQtComponent SoQtRenderArea SoQtViewer SoQtFullViewer SoQtConstrainedViewer SoQtExaminerViewer SoQtPlaneViewer SoQtFlyViewer SoQtWalkViewer

List of all members.

Public Types

enum  FloatColorBufferSize {
  FLOAT_16_COLOR_BUFFER = SoGuiGLWidget::FLOAT_16_COLOR_BUFFER,
  FLOAT_32_COLOR_BUFFER = SoGuiGLWidget::FLOAT_32_COLOR_BUFFER
}

Public Member Functions

int getColorMapSize ()
void setColorMapSize (int size)
virtual WindowQt getNormalWindow ()
QOpenGLContext * getQOpenGLContext ()
SoGLContextgetNormalSoContext ()
QWidget * getNormalWidget ()
QSurfaceFormat getQSurfaceFormat ()
virtual void setNormalVisual (QSurfaceFormat vis)
virtual void setNormalVisual (const SoGLFormat &format)
virtual void show ()
virtual void hide ()
virtual void setDoubleBuffer (SbBool onOrOff)
SbBool isDoubleBuffer ()
void setBorder (SbBool onOrOff)
int getBorderSize ()
SbBool isBorder () const
void setDrawToFrontBufferEnable (SbBool enableFlag)
SbBool isDrawToFrontBufferEnable () const
virtual SbBool bindNormalContext ()
virtual SbBool unbindNormalContext ()
virtual SbBool swapNormalBuffers ()
virtual void setCursor (const QCursor &newCursor)
QCursor getCursor () const
void setAntialiasing (const float quality, const SoSceneManager::AntialiasingMode mode=SoSceneManager::AUTO)
void setAntialiasing (SoAntialiasingParameters *advancedParameters)
float getAntialiasingQuality () const
SoSceneManager::AntialiasingMode getAntialiasingMode () const
SoAntialiasingParametersgetAntialiasingParameters () const
bool saveSnapshot (const SbString &filename, bool overwrite=true)

Friends

class SoQGLWidgetProxy

Detailed Description

VSG extension Component for OpenGL rendering.

This abstract base class provides a C++ wrapper around an OpenGL widget. It allows OpenGL rendering to be performed within a widget and is used by the SoQtRenderArea. SoQtGLWidget uses a parent window with two separate OpenGL 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 Q events.

SEE ALSO

SoQtComponent, SoQtRenderArea


Member Enumeration Documentation

FloatColorBufferSize.

Enumerator:
FLOAT_16_COLOR_BUFFER 

16-bit rendering per component.

FLOAT_32_COLOR_BUFFER 

32-bit rendering per component.


Member Function Documentation

virtual SbBool SoQtGLWidget::bindNormalContext (  )  [virtual]

Makes the normal rendering context the current context.

Equivalent to makeNormalCurrent() call.

SoSceneManager::AntialiasingMode SoQtGLWidget::getAntialiasingMode (  )  const

Returns the antialiasing mode set using the setAntialiasing(float,AntialiasingMode) method. Returns AUTO by default. Parameters set using the setAntialiasing(SoAntialiasingParameters*) method may change the antialiasing mode, but do not affect the value returned by this method. Therefore this method does not necessarily return the current actual antialiasing mode.

SoAntialiasingParameters* SoQtGLWidget::getAntialiasingParameters (  )  const

Returns the antialiasing parameters set using the setAntialiasing(SoAntialiasingParameters*) method. Returns null by default. A quality value set using the setAntialiasing(float,AntialiasingMode) method may modify internal parameters, but does not affect the value returned by this method. Therefore this method does not necessarily return the current actual antialiasing parameters.

float SoQtGLWidget::getAntialiasingQuality (  )  const

Returns the antialiasing quality set using the setAntialiasing(float,AntialiasingMode) method. Returns 0.0 by default. Parameters set using the setAntialiasing(SoAntialiasingParameters*) method override internal parameters, but do not affect the value returned by this method. Therefore this method does not necessarily return the current actual antialiasing quality.

int SoQtGLWidget::getBorderSize (  )  [inline]

Included for portability only.

int SoQtGLWidget::getColorMapSize (  ) 

Returns the color map size.

QCursor SoQtGLWidget::getCursor (  )  const

Returns the current cursor.

SoGLContext* SoQtGLWidget::getNormalSoContext (  ) 

Gets the current context, which is needed as an argument to glXMakeCurrent() (on Xt) or SbGlContextHelper::makeCurrent() (on Windows) when drawing in the normal planes.

Note: This should not be cached by users because it will change as OpenGL format changes.

QWidget* SoQtGLWidget::getNormalWidget (  ) 

Gets the current normal widget.


Since Open Inventor 8.0, this widget is a QWidget. More information about this class can be found on-line in the Qt documentation.

Note: This should not be cached by users because it will change as OpenGL format changes.

virtual WindowQt SoQtGLWidget::getNormalWindow (  )  [virtual]

Gets the normal GL window (window system identifier of the widget), which is needed as an argument to glXMakeCurrent() (on Xt) or SbGlContextHelper::makeCurrent() (on Windows) when drawing in the normal planes.

Note: This should not be cached by users because it will change as single/double buffering changes.

QOpenGLContext* SoQtGLWidget::getQOpenGLContext (  ) 

Gets the current context, which is needed as an argument to glXMakeCurrent() (on Xt) or SbGlContextHelper::makeCurrent() (on Windows) when drawing in the normal planes.

Note: This should not be cached by users because it will change as OpenGL format changes.

QSurfaceFormat SoQtGLWidget::getQSurfaceFormat (  ) 

Returns the QSurfaceFormat currently used.

virtual void SoQtGLWidget::hide (  )  [virtual]

This hides the component.

Reimplemented from SoQtComponent.

Reimplemented in SoQtFullViewer.

SbBool SoQtGLWidget::isBorder (  )  const [inline]

Included for portability only.

SbBool SoQtGLWidget::isDoubleBuffer (  )  [inline]

Returns whether double buffering is on or off.

SbBool SoQtGLWidget::isDrawToFrontBufferEnable (  )  const [inline]

Queries drawing to the front buffer.

bool SoQtGLWidget::saveSnapshot ( const SbString filename,
bool  overwrite = true 
)

Save a snapshot of the current image displayed in the viewer. The image is read back from the OpenGL framebuffer and will be the same size as the viewer's drawing window. Returns true if successful.Notes:

  • Depending on the operating system and graphics hardware, it is possible that the image could be incomplete if the viewer window is overlapped by other windows.
  • The supported image file formats are: BMP (Windows only), JPEG, PNG and TIFF.
    The image file format to write is determined by the extension of the specified filename, e.g. ".png" for PNG format.
  • For BMP and JPEG formats an RGB image is written.
  • For PNG and TIFF formats, an RGBA (RGB plus alpha channel) image is always written.
  • Writing an RGBA image means the image background is transparent. Actually an RGBA snapshot can not be saved without transparency. To get the displayed image without transparency, use the BMP or the JPEG format.
  • To generate an image with a different size or different options, use SoOffscreenRenderArea instead.
  • The specified filename must include a directory or nothing will be written. Can be simply "./filename.png", but just "filename.png" won't work.
Parameters:
filename Fully qualified file path for the snapshot file.
The specified filename must end with one of the extensions supported by SoJPEGImageRW (jpg, jpeg, ...), SoPNGImageRW (png), SoBMPImageRW (bmp), or SoTIFFImageRW (tif, ...).
overwrite If true, overwrite any existing file with the same name (default is true).

void SoQtGLWidget::setAntialiasing ( SoAntialiasingParameters advancedParameters  ) 

Enable (or disable) antialiasing with specific parameters. Use one of the subclasses of SoAntialiasingParameters. The antialiasing mode is determined by which subclass is used to set the parameters. For example, passing an SoFXAAParameters object automatically sets FXAA mode. Note that the parameters are overridden if a quality and mode are subsequently set using the setAntialiasing(float,AntialiasingMode) method.

NOTES

    • The caller is responsible for allocation and destruction of the advancedParameters object. SoSceneManager makes a copy of the parameter values, so the object can be destroyed after calling this method.
    Parameters:
    advancedParameters Provides specific parameters for an antialiasing mode.
    Use a null parameter to turn off antialiasing or use one of the subclasses of SoAntialiasingParameters.

void SoQtGLWidget::setAntialiasing ( const float  quality,
const SoSceneManager::AntialiasingMode  mode = SoSceneManager::AUTO 
)

Enable (or disable) antialiasing with specified quality and mode. Specific antialiasing parameters will be set automatically based on the quality value. Note that the quality and mode settings are overridden if specific antialiasing parameters are subsequently set using the setAntialiasing(SoAntialiasingParameters*) method.The default mode is AUTO but this may be overridden by setting the environment variable OIV_ANTIALIASING_DEFAULT_MODE (see SoPreferences).

Parameters:
quality The quality is a factor in the range [0.0,1.0].
Use the value 0.0 to turn off antialiasing. 0.5 is a typical value.
mode The antialiasing algorithm. Default is AUTO, which means use the best for the current hardware.
Use the value NO_ANTIALIASING to turn off antialiasing.

void SoQtGLWidget::setBorder ( SbBool  onOrOff  ) 

Included for portability only.

void SoQtGLWidget::setColorMapSize ( int  size  ) 

Sets the color map size.

virtual void SoQtGLWidget::setCursor ( const QCursor &  newCursor  )  [virtual]

Sets the current cursor.

If you are using a viewer class, the viewer will automatically change the cursor depending on the viewer mode. These changes will override the cursor set with this method unless you also call SoQtGLWidget::setCursorEnabled(FALSE).

virtual void SoQtGLWidget::setDoubleBuffer ( SbBool  onOrOff  )  [virtual]

Routine that dynamically changes between single and double buffering.

Default is double buffer off. (The SoQtRenderArea subclass makes it double buffer by default.)

void SoQtGLWidget::setDrawToFrontBufferEnable ( SbBool  enableFlag  ) 

Sets drawing to the front buffer.

Controls drawing to the front buffer when an obscured portion of the window is exposed. Default: TRUE.

virtual void SoQtGLWidget::setNormalVisual ( const SoGLFormat format  )  [virtual]

Sets the visual/pixel format for the normal window.


This allows the user to create all possible visuals supported by OpenGL. The OpenGL drivers or accelerated hardware may or may not support advanced features such as alpha channel or stereographic viewing. If you request some features that the driver/hardware does not provide when you set the QGLFormat , you will get a rendering context with the nearest subset of features.

The methods for setting the visual are virtual so that derived classes can know when the visual is changing.

virtual void SoQtGLWidget::setNormalVisual ( QSurfaceFormat  vis  )  [virtual]

Sets the visual/pixel format for the normal window.


This allows the user to create all possible visuals supported by OpenGL. The OpenGL drivers or accelerated hardware may or may not support advanced features such as alpha channel or stereographic viewing. If you request some features that the driver/hardware does not provide when you set the QGLFormat , you will get a rendering context with the nearest subset of features.

The methods for setting the visual are virtual so that derived classes can know when the visual is changing.

virtual void SoQtGLWidget::show (  )  [virtual]

This shows the component.

Reimplemented from SoQtComponent.

virtual SbBool SoQtGLWidget::swapNormalBuffers (  )  [virtual]

Swaps the normal front and back buffers.

virtual SbBool SoQtGLWidget::unbindNormalContext (  )  [virtual]

unbind the current context (previously bind with bindNormalContext );


Friends And Related Function Documentation

friend class SoQGLWidgetProxy [friend]

The documentation for this class was generated from the following file:

Open Inventor Toolkit reference manual, generated on 15 Mar 2023
Copyright © Thermo Fisher Scientific All rights reserved.
http://www.openinventor.com/