PySide6.QtQuick.QSGRendererInterface

class QSGRendererInterface

一个提供访问场景图部分图形API特定内部接口的界面。更多

概要

虚拟方法

静态函数

注意

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

详细描述

渲染器接口允许访问场景图中特定于图形API的功能。这些内部功能通常不会暴露出来。然而,当通过例如QSGRenderNode集成自定义渲染时,可能需要查询某些值,例如场景图使用的图形设备(例如Direct3D或Vulkan设备)。

QSGRendererInterface 的函数具有不同的可用性。API 和语言查询,例如 graphicsApi()shaderType() 始终可用,这意味着只需构造一个 QQuickWindowQQuickView,就可以通过 rendererInterface() 立即查询正在使用的图形 API 或着色语言。这保证了像 GraphicsInfo QML 类型这样的实用程序能够尽早报告正确的值,而不必依赖于条件属性值——例如依赖于 shaderType() ——评估为意外值。

特定于引擎的访问器,如getResource(),只有在场景图初始化后才可用。此外,这些函数何时可以调用可能还存在后端特定的限制。唯一保证成功的方法是在节点的渲染(即下一帧的命令列表准备)处于活动状态时调用它们。实际上,这通常意味着render()

class GraphicsApi

常量

描述

QSGRendererInterface.Unknown

正在使用未知的图形API

QSGRendererInterface.Software

正在使用Qt Quick 2D渲染器

QSGRendererInterface.OpenVG

通过EGL的OpenVG

QSGRendererInterface.OpenGL

通过图形抽象层实现的OpenGL ES 2.0或更高版本。

QSGRendererInterface.Direct3D11

通过图形抽象层实现的Direct3D 11。

QSGRendererInterface.Direct3D12

通过图形抽象层使用Direct3D 12。

QSGRendererInterface.Vulkan

通过图形抽象层实现的 Vulkan 1.0。

QSGRendererInterface.Metal

通过图形抽象层使用Metal。

QSGRendererInterface.Null

通过图形抽象层实现无输出。

class Resource

常量

描述

QSGRendererInterface.DeviceResource

该资源是指向图形设备的指针,当适用时。例如,VkDevice *MTLDevice *ID3D11Device *。请注意,对于Vulkan,返回的值是指向VkDevice的指针,而不是句柄本身。这是因为Vulkan句柄可能不是指针,并且可能使用与架构指针大小不同的大小,因此仅仅将其转换为/从void *是错误的。

QSGRendererInterface.CommandQueueResource

该资源是一个指向场景图使用的图形命令队列的指针,当适用时。例如,一个VkQueue *MTLCommandQueue *。请注意,对于Vulkan,返回的值是指向VkQueue的指针,而不是句柄本身。

QSGRendererInterface.CommandListResource

该资源是指向场景图使用的命令列表或缓冲区的指针,当适用时。例如,一个VkCommandBuffer *MTLCommandBuffer *。此对象的有效性有限,仅在场景图准备下一帧时有效。请注意,对于Vulkan,返回的值是指向VkCommandBuffer的指针,而不是句柄本身。

QSGRendererInterface.PainterResource

该资源是一个指向场景图使用的活动QPainter的指针,当使用软件后端运行时。

QSGRendererInterface.RhiResource

该资源是一个指向场景图使用的QRhi实例的指针,当适用时。

QSGRendererInterface.RhiSwapchainResource

该资源是一个指向与窗口关联的QRhiSwapchain实例的指针。当窗口与QQuickRenderControl结合使用时,该值为空。

QSGRendererInterface.RhiRedirectCommandBuffer

资源是一个指向与窗口及其QQuickRenderControl相关联的QRhiCommandBuffer实例的指针。当窗口未与QQuickRenderControl关联时,该值为空。

QSGRendererInterface.RhiRedirectRenderTarget

该资源是一个指向与窗口及其QQuickRenderControl相关联的QRhiTextureRenderTarget实例的指针。当窗口未与QQuickRenderControl关联时,该值为null。请注意,该值始终反映主纹理渲染目标,并且不依赖于Qt Quick场景,这意味着它不会考虑由ShaderEffectQQuickItem层生成的任何额外的纹理目标渲染通道。

QSGRendererInterface.PhysicalDeviceResource

该资源是指向场景图使用的物理设备对象的指针,当适用时。例如,一个VkPhysicalDevice *。请注意,使用Vulkan时,返回的值是指向VkPhysicalDevice的指针,而不是句柄本身。

QSGRendererInterface.OpenGLContextResource

该资源是指向场景图(在渲染线程上)使用的QOpenGLContext的指针,当适用时。

QSGRendererInterface.DeviceContextResource

该资源是指向场景图使用的设备上下文的指针,当适用时。例如,一个ID3D11DeviceContext *

QSGRendererInterface.CommandEncoderResource

该资源是一个指向场景图当前使用的活动渲染命令编码器对象的指针,当适用时。例如,一个MTLRenderCommandEncoder *。此对象的有效性有限,仅在场景图正在为下一帧记录渲染通道时有效。

QSGRendererInterface.VulkanInstanceResource

该资源是指向场景图使用的QVulkanInstance的指针,当适用时。

QSGRendererInterface.RenderPassResource

该资源是指向场景图使用的主要渲染通道的指针,描述了颜色和深度/模板附件及其使用方式。例如,一个VkRenderPass *。请注意,该值始终反映主要渲染目标(无论是屏幕上的窗口还是QQuickRenderControl重定向到的纹理),并且它不依赖于Qt Quick场景,这意味着它不会考虑由ShaderEffectQQuickItem层生成的任何额外的纹理目标渲染通道。

QSGRendererInterface.RedirectPaintDevice

资源是一个指向与窗口及其QQuickRenderControl关联的QPaintDevice实例的指针。当窗口未与QQuickRenderControl关联时,该值为空。

QSGRendererInterface.GraphicsQueueFamilyIndexResource

该资源是一个指向场景图使用的图形队列族索引的指针,当适用时。在Vulkan中,这是一个指向uint32_t索引值的指针。

QSGRendererInterface.GraphicsQueueIndexResource

该资源是一个指向场景图使用的图形队列索引(uint32_t)的指针,当适用时。对于Vulkan,这是一个指向uint32_t索引值的指针,实际上是为CommandQueueResource报告的VkQueue的索引。

class ShaderType

常量

描述

QSGRendererInterface.UnknownShadingLanguage

由于没有窗口和场景图关联,目前未知

QSGRendererInterface.GLSL

GLSL 或 GLSL ES

QSGRendererInterface.HLSL

HLSL

QSGRendererInterface.RhiShader

使用包含多种目标语言和中间格式的着色器变体的QShader实例。

class ShaderCompilationType

常量

描述

QSGRendererInterface.RuntimeCompilation

(继承 enum.Flag) 支持运行时编译着色器源代码

QSGRendererInterface.OfflineCompilation

支持预编译字节码

class ShaderSourceType

常量

描述

QSGRendererInterface.ShaderSourceString

(继承自 enum.Flag) 着色器源可以作为字符串在ShaderEffect的相应属性中提供

QSGRendererInterface.ShaderSourceFile

支持包含着色器源代码的本地或资源文件

QSGRendererInterface.ShaderByteCode

支持包含着色器字节码的本地或资源文件

class RenderMode

常量

描述

QSGRendererInterface.RenderMode2D

正常的2D渲染

QSGRendererInterface.RenderMode2DNoDepthBuffer

禁用深度缓冲区的普通2D渲染

QSGRendererInterface.RenderMode3D

场景作为3D图形的一部分进行渲染

getResource(window, resource)
Parameters:
Return type:

void

查询window中的图形resource。当所查询的资源不受支持或不可用时,返回null。

成功时,返回的指针要么是直接指向接口的指针,要么是需要首先解引用的不透明句柄的指针(例如,VkDevice dev = *static_cast *>(result))。后者是必要的,因为这样的句柄可能具有与指针不同的大小。

注意

返回指针的所有权永远不会转移给调用者。

注意

此函数只能在渲染线程上调用。

getResource(window, resource)
Parameters:
Return type:

void

查询图形资源。resource 是后端特定的键。这允许支持未在资源枚举中列出的任何未来资源。

注意

返回指针的所有权永远不会转移给调用者。

注意

此函数只能在渲染线程上调用。

abstract graphicsApi()
Return type:

GraphicsApi

返回Qt Quick场景图正在使用的图形API。

注意

此函数可以在任何线程上调用。

static isApiRhiBased(api)
Parameters:

apiGraphicsApi

Return type:

布尔

如果api基于图形抽象层(QRhi)而不是直接调用本地图形API,则返回true。

注意

此函数可以在任何线程上调用。

abstract shaderCompilationType()
Return type:

ShaderCompilationType 的组合

返回应用程序使用的Qt Quick后端支持的着色器编译方法的位掩码。

注意

此函数可以在任何线程上调用。

另请参阅

QtQuick::GraphicsInfo

abstract shaderSourceType()
Return type:

ShaderSourceType 的组合

返回一个位掩码,表示在ShaderEffect项目中支持的提供着色器源的方式。

注意

此函数可以在任何线程上调用。

另请参阅

QtQuick::GraphicsInfo

abstract shaderType()
Return type:

ShaderType

返回应用程序使用的Qt Quick后端支持的着色语言。

注意

此函数可以在任何线程上调用。

另请参阅

QtQuick::GraphicsInfo