QOpenGLPaintDevice Class
The QOpenGLPaintDevice class enables painting to an OpenGL context using QPainter. 更多...
头文件: | #include <QOpenGLPaintDevice> |
qmake: | QT += gui |
开始支持版本: | Qt 5.0 |
基类: | QPaintDevice |
公有函数
QOpenGLPaintDevice() | |
QOpenGLPaintDevice(const QSize &size) | |
QOpenGLPaintDevice(int width, int height) | |
virtual | ~QOpenGLPaintDevice() |
QOpenGLContext * | context() const |
qreal | dotsPerMeterX() const |
qreal | dotsPerMeterY() const |
virtual void | ensureActiveTarget() |
bool | paintFlipped() const |
void | setDevicePixelRatio(qreal devicePixelRatio) |
void | setDotsPerMeterX(qreal dpmx) |
void | setDotsPerMeterY(qreal dpmy) |
void | setPaintFlipped(bool flipped) |
void | setSize(const QSize &size) |
QSize | size() const |
重新实现的公有函数
virtual QPaintEngine * | paintEngine() const override |
- 14 个公有函数继承自 QPaintDevice
重新实现的受保护函数
virtual int | metric(QPaintDevice::PaintDeviceMetric metric) const override |
- 1 个受保护的函数继承自 QPaintDevice
详细描述
The QOpenGLPaintDevice class enables painting to an OpenGL context using QPainter.
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 acheived by calling QPainter::beginNativePainting() before starting the OpenGL rendering and calling QPainter::endNativePainting() after finishing.
成员函数
QOpenGLPaintDevice::QOpenGLPaintDevice()
Constructs a QOpenGLPaintDevice.
The QOpenGLPaintDevice is only valid for the current context.
参见 QOpenGLContext::currentContext().
QOpenGLPaintDevice::QOpenGLPaintDevice(const QSize &size)
Constructs a QOpenGLPaintDevice with the given size.
The QOpenGLPaintDevice is only valid for the current context.
参见 QOpenGLContext::currentContext().
QOpenGLPaintDevice::QOpenGLPaintDevice(int width, int height)
Constructs a QOpenGLPaintDevice with the given width and height.
The QOpenGLPaintDevice is only valid for the current context.
参见 QOpenGLContext::currentContext().
[virtual]
QOpenGLPaintDevice::~QOpenGLPaintDevice()
Destroys the QOpenGLPaintDevice.
QOpenGLContext *QOpenGLPaintDevice::context() const
Returns the OpenGL context associated with the paint device.
qreal QOpenGLPaintDevice::dotsPerMeterX() const
Returns the number of pixels per meter horizontally.
参见 setDotsPerMeterX().
qreal QOpenGLPaintDevice::dotsPerMeterY() const
Returns the number of pixels per meter vertically.
参见 setDotsPerMeterY().
[virtual]
void 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.
[override virtual protected]
int QOpenGLPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const
Reimplemented from QPaintDevice::metric().
[override virtual]
QPaintEngine *QOpenGLPaintDevice::paintEngine() const
Reimplemented from QPaintDevice::paintEngine().
bool QOpenGLPaintDevice::paintFlipped() const
Returns true
if painting is flipped around the Y-axis.
参见 setPaintFlipped().
void QOpenGLPaintDevice::setDevicePixelRatio(qreal devicePixelRatio)
Sets the device pixel ratio for the paint device to devicePixelRatio.
void QOpenGLPaintDevice::setDotsPerMeterX(qreal dpmx)
Sets the number of pixels per meter horizontally to dpmx.
参见 dotsPerMeterX().
void QOpenGLPaintDevice::setDotsPerMeterY(qreal dpmy)
Sets the number of pixels per meter vertically to dpmy.
参见 dotsPerMeterY().
void QOpenGLPaintDevice::setPaintFlipped(bool flipped)
Sets whether painting should be flipped around the Y-axis or not to flipped.
参见 paintFlipped().
void QOpenGLPaintDevice::setSize(const QSize &size)
Sets the pixel size of the paint device to size.
参见 size().
QSize QOpenGLPaintDevice::size() const
Returns the pixel size of the paint device.
参见 setSize().