QOpenGLPaintDevice 类
QOpenGLPaintDevice 类允许使用 QPainter 在 OpenGL 上下文中进行绘图。 更多...
头文件 | #include <QOpenGLPaintDevice> |
CMake | find_package(Qt6 REQUIRED COMPONENTS OpenGL) target_link_libraries(mytarget PRIVATE Qt6::OpenGL) |
qmake | QT += opengl |
继承 | QPaintDevice |
- 包括继承成员在内的所有成员列表
- QOpenGLPaintDevice 是 3D 渲染 的一部分。
公共函数
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 |
重实现的保护函数
virtual int | metric(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)
使用给定的width和height构造一个QOpenGLPaintDevice。
QOpenGLPaintDevice只对当前上下文有效。
另请参阅 QOpenGLContext::currentContext。
[虚拟 noexcept]
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.'的商标。所有其他商标均为其各自所有者的财产。