PySide6.QtQuick.QSGRendererInterface¶
- class QSGRendererInterface¶
一个提供访问场景图部分图形API特定内部接口的界面。更多…
概要¶
虚拟方法¶
def
getResource()
def
graphicsApi()
def
shaderType()
静态函数¶
def
isApiRhiBased()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
渲染器接口允许访问场景图中特定于图形API的功能。这些内部功能通常不会暴露出来。然而,当通过例如
QSGRenderNode
集成自定义渲染时,可能需要查询某些值,例如场景图使用的图形设备(例如Direct3D或Vulkan设备)。QSGRendererInterface
的函数具有不同的可用性。API 和语言查询,例如graphicsApi()
或shaderType()
始终可用,这意味着只需构造一个QQuickWindow
或QQuickView
,就可以通过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场景,这意味着它不会考虑由ShaderEffect或QQuickItem
层生成的任何额外的纹理目标渲染通道。QSGRendererInterface.PhysicalDeviceResource
该资源是指向场景图使用的物理设备对象的指针,当适用时。例如,一个
VkPhysicalDevice *
。请注意,使用Vulkan时,返回的值是指向VkPhysicalDevice的指针,而不是句柄本身。QSGRendererInterface.OpenGLContextResource
该资源是指向场景图(在渲染线程上)使用的QOpenGLContext的指针,当适用时。
QSGRendererInterface.DeviceContextResource
该资源是指向场景图使用的设备上下文的指针,当适用时。例如,一个
ID3D11DeviceContext *
。QSGRendererInterface.CommandEncoderResource
该资源是一个指向场景图当前使用的活动渲染命令编码器对象的指针,当适用时。例如,一个
MTLRenderCommandEncoder *
。此对象的有效性有限,仅在场景图正在为下一帧记录渲染通道时有效。QSGRendererInterface.VulkanInstanceResource
该资源是指向场景图使用的QVulkanInstance的指针,当适用时。
QSGRendererInterface.RenderPassResource
该资源是指向场景图使用的主要渲染通道的指针,描述了颜色和深度/模板附件及其使用方式。例如,一个
VkRenderPass *
。请注意,该值始终反映主要渲染目标(无论是屏幕上的窗口还是QQuickRenderControl
重定向到的纹理),并且它不依赖于Qt Quick场景,这意味着它不会考虑由ShaderEffect或QQuickItem
层生成的任何额外的纹理目标渲染通道。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:
窗口 –
QQuickWindow
resource –
Resource
- Return type:
void
查询
window
中的图形resource
。当所查询的资源不受支持或不可用时,返回null。成功时,返回的指针要么是直接指向接口的指针,要么是需要首先解引用的不透明句柄的指针(例如,
VkDevice dev = *static_cast
)。后者是必要的,因为这样的句柄可能具有与指针不同的大小。*>(result) 注意
返回指针的所有权永远不会转移给调用者。
注意
此函数只能在渲染线程上调用。
- getResource(window, resource)
- Parameters:
窗口 –
QQuickWindow
resource – str
- Return type:
void
查询图形资源。
resource
是后端特定的键。这允许支持未在资源枚举中列出的任何未来资源。注意
返回指针的所有权永远不会转移给调用者。
注意
此函数只能在渲染线程上调用。
- abstract graphicsApi()¶
- Return type:
返回Qt Quick场景图正在使用的图形API。
注意
此函数可以在任何线程上调用。
- static isApiRhiBased(api)¶
- Parameters:
api –
GraphicsApi
- Return type:
布尔
如果
api
基于图形抽象层(QRhi)而不是直接调用本地图形API,则返回true。注意
此函数可以在任何线程上调用。
- abstract shaderCompilationType()¶
- Return type:
返回应用程序使用的Qt Quick后端支持的着色器编译方法的位掩码。
- abstract shaderSourceType()¶
- Return type:
ShaderSourceType
的组合
返回一个位掩码,表示在ShaderEffect项目中支持的提供着色器源的方式。
- abstract shaderType()¶
- Return type:
返回应用程序使用的Qt Quick后端支持的着色语言。