QOpenGLPaintDevice

The QOpenGLPaintDevice class enables painting to an OpenGL context using QPainter . More

Inheritance diagram of PySide6.QtOpenGL.QOpenGLPaintDevice

Synopsis

Functions

Virtual functions

Detailed Description

The QOpenGLPaintDevice uses the current QOpenGL context to render QPainter draw commands. The context is captured upon construction. It requires support for OpenGL (ES) 2.0 or higher.

Performance

The QOpenGLPaintDevice is almost always hardware accelerated and has the potential of being much faster than software rasterization. However, it is more sensitive to state changes, and therefore requires the drawing commands to be carefully ordered to achieve optimal performance.

Antialiasing and Quality

Antialiasing in the OpenGL paint engine is done using multisampling. Most hardware require significantly more memory to do multisampling and the resulting quality is not on par with the quality of the software paint engine. The OpenGL paint engine’s strength lies in its performance, not its visual rendering quality.

State Changes

When painting to a QOpenGLPaintDevice using QPainter , the state of the current OpenGL context will be altered by the paint engine to reflect its needs. Applications should not rely upon the OpenGL state being reset to its original conditions, particularly the current shader program, OpenGL viewport, texture units, and drawing modes.

Mixing QPainter and OpenGL

When intermixing QPainter and OpenGL, it is important to notify QPainter that the OpenGL state may have been cluttered so it can restore its internal state. This is achieved by calling beginNativePainting() before starting the OpenGL rendering and calling endNativePainting() after finishing.

See also

OpenGL Window Example

class PySide6.QtOpenGL.QOpenGLPaintDevice

PySide6.QtOpenGL.QOpenGLPaintDevice(size)

PySide6.QtOpenGL.QOpenGLPaintDevice(width, height)

Parameters

Constructs a QOpenGLPaintDevice .

The QOpenGLPaintDevice is only valid for the current context.

See also

currentContext()

Constructs a QOpenGLPaintDevice with the given size.

The QOpenGLPaintDevice is only valid for the current context.

See also

currentContext()

Constructs a QOpenGLPaintDevice with the given width and height.

The QOpenGLPaintDevice is only valid for the current context.

See also

currentContext()

PySide6.QtOpenGL.QOpenGLPaintDevice.context()
Return type

PySide6.QtGui.QOpenGLContext

Returns the OpenGL context associated with the paint device.

PySide6.QtOpenGL.QOpenGLPaintDevice.dotsPerMeterX()
Return type

float

Returns the number of pixels per meter horizontally.

PySide6.QtOpenGL.QOpenGLPaintDevice.dotsPerMeterY()
Return type

float

Returns the number of pixels per meter vertically.

PySide6.QtOpenGL.QOpenGLPaintDevice.ensureActiveTarget()

This virtual method is provided as a callback to allow re-binding a target frame buffer object or context when different QOpenGLPaintDevice instances are issuing draw calls alternately.

beginNativePainting() will also trigger this method.

The default implementation does nothing.

PySide6.QtOpenGL.QOpenGLPaintDevice.paintFlipped()
Return type

bool

Returns true if painting is flipped around the Y-axis.

PySide6.QtOpenGL.QOpenGLPaintDevice.setDevicePixelRatio(devicePixelRatio)
Parameters

devicePixelRatio – float

Sets the device pixel ratio for the paint device to devicePixelRatio.

PySide6.QtOpenGL.QOpenGLPaintDevice.setDotsPerMeterX(arg__1)
Parameters

arg__1 – float

Sets the number of pixels per meter horizontally to dpmx.

See also

dotsPerMeterX()

PySide6.QtOpenGL.QOpenGLPaintDevice.setDotsPerMeterY(arg__1)
Parameters

arg__1 – float

Sets the number of pixels per meter vertically to dpmy.

See also

dotsPerMeterY()

PySide6.QtOpenGL.QOpenGLPaintDevice.setPaintFlipped(flipped)
Parameters

flipped – bool

Sets whether painting should be flipped around the Y-axis or not to flipped.

See also

paintFlipped()

PySide6.QtOpenGL.QOpenGLPaintDevice.setSize(size)
Parameters

sizePySide6.QtCore.QSize

Sets the pixel size of the paint device to size.

See also

size()

PySide6.QtOpenGL.QOpenGLPaintDevice.size()
Return type

PySide6.QtCore.QSize

Returns the pixel size of the paint device.

See also

setSize()