class RenderState#

封装了在调用updateUniformData()和其他update类型函数时当前的渲染状态。更多信息…

概述

方法

注意

本文档可能包含从C++自动翻译到Python的摘录。我们始终欢迎对摘录翻译的贡献。如果您发现翻译问题,您也可以通过在https:/bugreports.qt.io/projects/PYSIDE创建工单的方式来告诉我们。

详细描述

渲染状态包含了一些访问器,着色器需要遵守这些访问器以符合场景图当前的状态。

class DirtyState#

常量

描述

QSGMaterialShader.RenderState.DirtyMatrix

(继承自 enum.Flag) 用来指示矩阵已更改,必须更新。

QSGMaterialShader.RenderState.DirtyOpacity

用来指示不透明度已更改,必须更新。

QSGMaterialShader.RenderState.DirtyCachedMaterialData

用来指示缓存的材质状态已更改,必须更新。

QSGMaterialShader.RenderState.DirtyAll

用来指示需要更新所有内容。

combinedMatrix()#
返回类型:

QMatrix4x4

返回模型视图矩阵和投影矩阵组合后的矩阵。

determinant()#
返回类型:

float

返回用于渲染的模型视图矩阵行列式。

devicePixelRatio()#
返回类型:

float

返回用于渲染的物理像素与设备无关像素之间的比率。

deviceRect()#
返回类型:

QRect

返回渲染表面的设备矩形。

dirtyStates()#
返回类型:

DirtyState 的组合

返回哪些渲染状态已更改,需要更新,以确保使用此材质渲染的几何体与当前渲染状态相符合。

isMatrixDirty()#
返回类型:

bool

如果 dirtyStates() 包含脏矩阵状态,则返回 true,否则返回 false

isOpacityDirty()#
返回类型:

bool

如果 dirtyStates() 包含脏不透明度状态,则返回 true,否则返回 false

modelViewMatrix()#
返回类型:

QMatrix4x4

返回模型视图矩阵。

如果材质设置为 RequiresFullMatrix 标志,则保证这是从场景图中计算出的完整变换矩阵。

然而,如果没有设置此标志,渲染器可以选择修改此矩阵。例如,它可能在 CPU 上预先变换顶点并将此矩阵设置为为单位矩阵。

在上述情况下,仍然可以通过设置材质中的 RequiresDeterminant 标志并调用 determinant() 访问器来检索实际的矩阵行列式。

opacity()#
返回类型:

float

返回用于渲染的累积透明度。

projectionMatrix()#
返回类型:

QMatrix4x4

返回投影矩阵。

resourceUpdateBatch()#
返回类型:

QRhiResourceUpdateBatch

返回一个资源更新批处理对象,可以将上传和复制操作放入队列。这通常用于updateSampledImage()来排入纹理图像内容更新的队列。

rhi()#
返回类型:

QRhi

返回当前的QRhi。

uniformData()#
返回类型:

QByteArray

返回用于着色器中日量(常量)缓冲区数据的指针。必须仅从updateUniformData()中更新统一数据。在其他可重写的函数中,例如updateSampledImage(),返回值是null。

注意

强烈建议在着色器中使用std140声明统一块,并仔细研究OpenGL规范第7.6.2.2节中描述的标准统一块布局。确保数据正确放置在此QByteArray中的位置的责任在于QSGMaterialShader的实现,考虑对齐要求。期望转换到其他着色语言的开源代码使用块成员相同的偏移量,即使目标语言默认使用不同的打包规则。

注意

避免从C++ POD类型(如结构体)复制,以一次性更新多个成员,除非已验证C++结构和GLSL统一块的布局匹配。

viewportRect()#
返回类型:

QRect

返回渲染表面的视口矩形。