- class RenderState#
封装了在调用
updateUniformData()
和其他update
类型函数时当前的渲染状态。更多信息…概述
方法
def combinedMatrix()
def determinant()
def deviceRect()
def dirtyStates()
def isMatrixDirty()
def isOpacityDirty()
def opacity()
def rhi()
def uniformData()
def viewportRect()
注意
本文档可能包含从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()#
- 返回类型:
返回模型视图矩阵和投影矩阵组合后的矩阵。
- determinant()#
- 返回类型:
float
返回用于渲染的模型视图矩阵行列式。
- devicePixelRatio()#
- 返回类型:
float
返回用于渲染的物理像素与设备无关像素之间的比率。
返回渲染表面的设备矩形。
- dirtyStates()#
- 返回类型:
DirtyState
的组合
返回哪些渲染状态已更改,需要更新,以确保使用此材质渲染的几何体与当前渲染状态相符合。
- isMatrixDirty()#
- 返回类型:
bool
如果
dirtyStates()
包含脏矩阵状态,则返回true
,否则返回false
。- isOpacityDirty()#
- 返回类型:
bool
如果
dirtyStates()
包含脏不透明度状态,则返回true
,否则返回false
。- modelViewMatrix()#
- 返回类型:
返回模型视图矩阵。
如果材质设置为 RequiresFullMatrix 标志,则保证这是从场景图中计算出的完整变换矩阵。
然而,如果没有设置此标志,渲染器可以选择修改此矩阵。例如,它可能在 CPU 上预先变换顶点并将此矩阵设置为为单位矩阵。
在上述情况下,仍然可以通过设置材质中的 RequiresDeterminant 标志并调用
determinant()
访问器来检索实际的矩阵行列式。- opacity()#
- 返回类型:
float
返回用于渲染的累积透明度。
- projectionMatrix()#
- 返回类型:
返回投影矩阵。
- resourceUpdateBatch()#
- 返回类型:
QRhiResourceUpdateBatch
返回一个资源更新批处理对象,可以将上传和复制操作放入队列。这通常用于
updateSampledImage()
来排入纹理图像内容更新的队列。- rhi()#
- 返回类型:
QRhi
返回当前的QRhi。
- uniformData()#
- 返回类型:
返回用于着色器中日量(常量)缓冲区数据的指针。必须仅从
updateUniformData()
中更新统一数据。在其他可重写的函数中,例如updateSampledImage()
,返回值是null。注意
强烈建议在着色器中使用
std140
声明统一块,并仔细研究OpenGL规范第7.6.2.2节中描述的标准统一块布局。确保数据正确放置在此QByteArray中的位置的责任在于QSGMaterialShader
的实现,考虑对齐要求。期望转换到其他着色语言的开源代码使用块成员相同的偏移量,即使目标语言默认使用不同的打包规则。注意
避免从C++ POD类型(如结构体)复制,以一次性更新多个成员,除非已验证C++结构和GLSL统一块的布局匹配。
返回渲染表面的视口矩形。