class QOpenGLPaintDevice#

QOpenGLPaintDevice 通过 QPainter 实现了对 OpenGL 上下文的绘制。更多...

Inheritance diagram of PySide6.QtOpenGL.QOpenGLPaintDevice

概述#

方法#

虚方法#

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译有问题,您也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建ticket来告知我们

详细描述#

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

性能#

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

抗锯齿和质量#

OpenGL绘图引擎中的抗锯齿采用多采样实现。大多数硬件在执行多采样时需要更多的内存,且结果质量可能与软件绘图引擎质量不相上下。OpenGL绘图引擎的优势在于其性能,而不是其视觉渲染质量。

状态变化#

使用 QPainter 在 QOpenGLPaintDevice 上进行绘图时,绘图引擎将通过更改当前OpenGL上下文的当前状态来满足其需求。应用程序不应依赖于将OpenGL状态重置到其原始条件,尤其是当前着色程序、OpenGL视口、纹理单位和绘图模式。

组合 QPainter 和 OpenGL#

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

另请参阅

OpenGL 窗口示例

__init__()#

构造一个 QOpenGLPaintDevice

《QOpenGLPaintDevice》类(PySide6.QtOpenGL.QOpenGLPaintDevice)仅在当前上下文中有效。

另请参阅

currentContext()

__init__(size)
参数:

sizeQSize

使用给定的 size 构造一个 QOpenGLPaintDevice

《QOpenGLPaintDevice》类(PySide6.QtOpenGL.QOpenGLPaintDevice)仅在当前上下文中有效。

另请参阅

currentContext()

__init__(width, height)
参数:
  • width – int

  • height – int

使用给定的 widthheight 构造一个 QOpenGLPaintDevice

《QOpenGLPaintDevice》类(PySide6.QtOpenGL.QOpenGLPaintDevice)仅在当前上下文中有效。

另请参阅

currentContext()

context()#
返回类型:

QOpenGLContext

返回与画布关联的OpenGL上下文。

dotsPerMeterX()#
返回类型:

float

返回横向每米像素数。

另请参阅

setDotsPerMeterX()

dotsPerMeterY()#
返回类型:

float

返回纵向每米像素数。

另请参阅

setDotsPerMeterY()

ensureActiveTarget()#

这个虚方法提供一个回调,允许在不同 QOpenGLPaintDevice 实例交替发出绘制调用时重新绑定目标帧缓冲对象或上下文。

调用 beginNativePainting() 也会触发此方法。

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

paintFlipped()#
返回类型:

bool

如果绘制是围绕Y轴翻转的,则返回 true

另请参阅

setPaintFlipped()

setDevicePixelRatio(devicePixelRatio)#
参数:

devicePixelRatio – float

将画布的设备像素比设置为 devicePixelRatio

setDotsPerMeterX(arg__1)#
参数:

arg__1 – float

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

另请参阅

dotsPerMeterX()

setDotsPerMeterY(arg__1)#
参数:

arg__1 – float

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

另请参阅

dotsPerMeterY()

setPaintFlipped(flipped)#
参数:

flipped – bool

设置是否在Y轴周围翻转绘画到 flipped

另请参阅

paintFlipped()

setSize(size)#
参数:

sizeQSize

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

另请参阅

size()

size()#
返回类型:

QSize

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

另请参阅

setSize()