Component for OpenGL rendering.
More...
#include <Inventor/Qt/SoQtGLWidget.h>
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.
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.
int SoQtGLWidget::getFrameBufferObjectId | ( | ) | const |
With QOpenGLWidget, the OpenGL rendering can be done in Frame Buffer Object.
In some case, we have to get the id of the FBO used. For example : if you want to read pixels when the anti-aliasing is activated. This function return the FBO id.
SoDEPRECATED SbBool SoQtGLWidget::getFullSceneAntialiasing | ( | float & | quality | ) |
Returns TRUE if FSAA is currently enabled.
Also returns the current quality value.
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 single/double buffering changes.
QWidget* SoQtGLWidget::getNormalWidget | ( | ) |
Gets the current normal widget.
Since Open Inventor 8.0, this widget is a QGLWidget. More information about this class can be found on-line in the Qt documentation.
The actual class returned by this method is an instance of SoQGLWidgetProxy, which is an Open Inventor internal class derived from QGLWidget. The instance can be used as a QGLWidget, but note that Open Inventor manages OpenGL itself, so it does not implement the initializeGL, paintGL, etc methods.
Note: This should not be cached by users because it will change as single/double buffering 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 single/double buffering changes.
QSurfaceFormat SoQtGLWidget::getQSurfaceFormat | ( | ) |
Returns the QSurfaceFormat currently used.
virtual void SoQtGLWidget::hide | ( | ) | [virtual] |
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.
SoDEPRECATED SbBool SoQtGLWidget::isFsaaSupported | ( | ) |
Makes the normal rendering context the current context.
SoDEPRECATED SbBool SoQtGLWidget::isFullSceneAntialiasingAvailable | ( | ) | const |
Returns TRUE if FSAA is supported by current pixel format.
SoDEPRECATED SbBool SoQtGLWidget::isFullSceneAntialiasingEnabled | ( | ) | const |
Returns TRUE, if full-scene antialiasing (FSAA) is enabled.
SoDEPRECATED SbBool SoQtGLWidget::isFullSceneAntialiasingHQAvailable | ( | ) | const |
Returns TRUE if high quality full-scene antialiasing (FSAA) is available.
SoDEPRECATED SbBool SoQtGLWidget::isFullSceneAntialiasingHQEnabled | ( | ) | const |
Returns TRUE if the high quality mode for full-scene antialiasing (FSAA) is enabled.
virtual SoDEPRECATED SbBool SoQtGLWidget::makeNormalCurrent | ( | ) | [virtual] |
Makes the normal rendering context the current context.
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:
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.
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).
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.
SoDEPRECATED SbBool SoQtGLWidget::setFullSceneAntialiasing | ( | SbBool | enable, | |
float | quality = -1.0 , |
|||
int | filterMask = SoFullSceneAntialiasing::ALL | |||
) |
Enables or disables full-scene antialiasing (FSAA).
Returns TRUE on success.
FSAA is supported via the ARB_multisample OpenGL extension. The ARB_pixel_format OpenGL extension is also required to support this feature.
Note: Use the SoFullSceneAntialiasing node to control FSAA during render traversal.
enable | Enables or disables FSAA rendering. | |
quality | Specifies the level of quality of the antialiasing rendering. The number of samples used in the antialiasing computation depends on your graphics hardware and on your video driver. NVidia graphics hardware can support number of samples * 2 levels of quality (assuming the NV_multisample_filter_hint OpenGL extension is available). The quality value is in the [0..1] interval. 0 is the lowest quality level and 1 is the highest quality level. When set to -1.0 the quality value is the default value for the pixel format. | |
filterMask | Specifies the types of shapes that should be antialiased (See SoFullSceneAntialiasing for more info.) |
Enables or disables the high quality mode for full-scene antialiasing (FSAA).
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 );
friend class SoQGLWidgetProxy [friend] |