QOpenGLPaintDevice 类

QOpenGLPaintDevice 类允许使用 QPainter 在 OpenGL 上下文中进行绘图。 更多...

头文件 #include <QOpenGLPaintDevice>
CMakefind_package(Qt6 REQUIRED COMPONENTS OpenGL)
target_link_libraries(mytarget PRIVATE Qt6::OpenGL)
qmakeQT += opengl
继承 QPaintDevice

公共函数

QOpenGLPaintDevice()
QOpenGLPaintDevice(const QSize &size)
QOpenGLPaintDevice(int width, int height)
virtual~QOpenGLPaintDevice()
QOpenGLContext *context() const
qrealdotsPerMeterX() const
qrealdotsPerMeterY() const
virtual voidensureActiveTarget()
boolpaintFlipped() const
voidsetDevicePixelRatio(qreal devicePixelRatio)
voidsetDotsPerMeterX(qreal dpmx)
voidsetDotsPerMeterY(qreal dpmy)
voidsetPaintFlipped(bool flipped)
voidsetSize(const QSize &size)
QSizesize() const

重实现的公共函数

virtual QPaintEngine *paintEngine() const override

重实现的保护函数

virtual intmetric(QPaintDevice::PaintDeviceMetric metric) const override

详细说明

QOpenGLPaintDevice 使用当前的 QOpenGL 上下文来执行 QPainter 绘图命令。上下文在构造时捕获。它需要支持 OpenGL (ES) 2.0 或更高版本。

性能

QOpenGLPaintDevice 几乎总是硬件加速的,并且可能比软件光栅化要快得多。然而,它对状态的更改更敏感,因此需要仔细排序绘图命令以实现最佳性能。

抗锯齿和质量

OpenGL绘图引擎中使用多采样进行抗锯齿处理。大多数硬件需要更多的内存来进行多采样,而其结果的质量并不与软件绘图引擎的质量相匹配。OpenGL绘图引擎的优势在于其性能,而非视觉渲染质量。

状态变更

使用QPainter将画图绘制到QOpenGLPaintDevice时,绘图引擎将修改当前OpenGL上下文的状态,以反映其需求。应用程序不应依赖OpenGL状态被重置到原始条件,尤其是当前的着色程序、OpenGL视口、纹理单元和绘图模式。

混用QPainter和OpenGL

当混合使用QPainter和OpenGL时,需要通知QPainterOpenGL状态可能已经混乱,以便它可以将内部状态还原。这是通过在开始OpenGL渲染之前调用QPainter::beginNativePainting()以及在完成后调用QPainter::endNativePainting()来实现的。

另请参阅 OpenGL窗口示例

成员函数文档

QOpenGLPaintDevice::QOpenGLPaintDevice()

构造一个QOpenGLPaintDevice。

QOpenGLPaintDevice只对当前上下文有效。

另请参阅 QOpenGLContext::currentContext

[显式] QOpenGLPaintDevice::QOpenGLPaintDevice(const QSize &size)

使用给定的size构造一个QOpenGLPaintDevice。

QOpenGLPaintDevice只对当前上下文有效。

另请参阅 QOpenGLContext::currentContext

QOpenGLPaintDevice::QOpenGLPaintDevice(int width, int height)

使用给定的widthheight构造一个QOpenGLPaintDevice。

QOpenGLPaintDevice只对当前上下文有效。

另请参阅 QOpenGLContext::currentContext

[虚拟 noexcept] QOpenGLPaintDevice::~QOpenGLPaintDevice()

销毁QOpenGLPaintDevice

QOpenGLContext *QOpenGLPaintDevice::context() const

返回与绘图设备关联的OpenGL上下文。

qreal QOpenGLPaintDevice::dotsPerMeterX() const

返回水平方向每米的像素数。

另请参阅 setDotsPerMeterX

qreal QOpenGLPaintDevice::dotsPerMeterY() const

返回垂直方向每米的像素数。

另请参阅 setDotsPerMeterY

[虚拟] void QOpenGLPaintDevice::ensureActiveTarget()

此虚拟方法是作为回调提供的,以允许在交替调用不同QOpenGLPaintDevice实例时重新绑定目标帧缓冲对象或上下文。

beginNativePainting()也会触发此方法。

默认实现不执行任何操作。

[覆盖虚保护] int QOpenGLPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const

重实现: QPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const.

[覆盖虚] QPaintEngine *QOpenGLPaintDevice::paintEngine() const

重实现: QPaintDevice::paintEngine() const.

bool QOpenGLPaintDevice::paintFlipped() const

如果绘画沿Y轴翻转,则返回 true

另请参阅 setPaintFlipped().

void QOpenGLPaintDevice::setDevicePixelRatio(qreal devicePixelRatio)

将绘画设备的设备像素比率设置为 devicePixelRatio

void QOpenGLPaintDevice::setDotsPerMeterX(qreal dpmx)

将水平每米像素数设置为 dpmx

另请参阅 dotsPerMeterX().

void QOpenGLPaintDevice::setDotsPerMeterY(qreal dpmy)

将垂直每米像素数设置为 dpmy

另请参阅 dotsPerMeterY().

void QOpenGLPaintDevice::setPaintFlipped(bool flipped)

设置是否沿Y轴翻转绘制,为 flipped

另请参阅 paintFlipped().

void QOpenGLPaintDevice::setSize(const QSize &size)

将绘画设备的像素大小设置为 size

另请参阅 size().

QSize QOpenGLPaintDevice::size() const

返回绘画设备的像素大小。

另请参阅 setSize().

© 2024 The Qt Company Ltd. 本文档中包含的贡献的文档版权归各自的所有者所有。本提供的文档是根据自由软件基金会发布的、GNU自由文档许可证第1.3版下的条款许可的。Qt及其相关标志为芬兰和/或世界各地的The Qt Company Ltd.'的商标。所有其他商标均为其各自所有者的财产。