- class QSGRendererInterface#
An interface providing access to some of the graphics API specific internals of the scenegraph. More…
Synopsis#
Virtual methods#
def
getResource()
def
graphicsApi()
def
shaderType()
Static functions#
def
isApiRhiBased()
Note
This documentation may contain snippets that were automatically translated from C++ to Python. We always welcome contributions to the snippet translation. If you see an issue with the translation, you can also let us know by creating a ticket on https:/bugreports.qt.io/projects/PYSIDE
Detailed Description#
Renderer interfaces allow accessing graphics API specific functionality in the scenegraph. Such internals are not typically exposed. However, when integrating custom rendering via
QSGRenderNode
for example, it may become necessary to query certain values, for instance the graphics device (e.g. the Direct3D or Vulkan device) that is used by the scenegraph.QSGRendererInterface
‘s functions have varying availability. API and language queries, such as,graphicsApi()
orshaderType()
are always available, meaning it is sufficient to construct aQQuickWindow
orQQuickView
, and the graphics API or shading language in use can be queried right after viarendererInterface()
. This guarantees that utilities like the GraphicsInfo QML type are able to report the correct values as early as possible, without having conditional property values - depending on for instanceshaderType()
- evaluate to unexpected values.Engine-specific accessors, like
getResource()
, are however available only after the scenegraph is initialized. Additionally, there may be backend-specific limitations on when such functions can be called. The only way that is guaranteed to succeed is calling them when the rendering of a node (i.e. the preparation of the command list for the next frame) is active. In practice this typically meansrender()
.- class GraphicsApi#
Constant
Description
QSGRendererInterface.Unknown
An unknown graphics API is in use
QSGRendererInterface.Software
The Qt Quick 2D Renderer is in use
QSGRendererInterface.OpenVG
OpenVG via EGL
QSGRendererInterface.OpenGL
OpenGL ES 2.0 or higher via a graphics abstraction layer.
QSGRendererInterface.Direct3D11
Direct3D 11 via a graphics abstraction layer.
QSGRendererInterface.Direct3D12
Direct3D 12 via a graphics abstraction layer.
QSGRendererInterface.Vulkan
Vulkan 1.0 via a graphics abstraction layer.
QSGRendererInterface.Metal
Metal via a graphics abstraction layer.
QSGRendererInterface.Null
Null (no output) via a graphics abstraction layer.
- class Resource#
Constant
Description
QSGRendererInterface.DeviceResource
The resource is a pointer to the graphics device, when applicable. For example, a
VkDevice *
,MTLDevice *
orID3D11Device *
. Note that with Vulkan the returned value is a pointer to the VkDevice, not the handle itself. This is because Vulkan handles may not be pointers, and may use a different size from the architecture’s pointer size so merely casting to/fromvoid *
is wrong.QSGRendererInterface.CommandQueueResource
The resource is a pointer to the graphics command queue used by the scenegraph, when applicable. For example, a
VkQueue *
orMTLCommandQueue *
. Note that with Vulkan the returned value is a pointer to the VkQueue, not the handle itself.QSGRendererInterface.CommandListResource
The resource is a pointer to the command list or buffer used by the scenegraph, when applicable. For example, a
VkCommandBuffer *
orMTLCommandBuffer *
. This object has limited validity, and is only valid while the scene graph is preparing the next frame. Note that with Vulkan the returned value is a pointer to the VkCommandBuffer, not the handle itself.QSGRendererInterface.PainterResource
The resource is a pointer to the active QPainter used by the scenegraph, when running with the software backend.
QSGRendererInterface.RhiResource
The resource is a pointer to the QRhi instance used by the scenegraph, when applicable.
QSGRendererInterface.RhiSwapchainResource
The resource is a pointer to a QRhiSwapchain instance that is associated with the window. The value is null when the window is used in combination with
QQuickRenderControl
.QSGRendererInterface.RhiRedirectCommandBuffer
The resource is a pointer to a QRhiCommandBuffer instance that is associated with the window and its
QQuickRenderControl
. The value is null when the window is not associated with aQQuickRenderControl
.QSGRendererInterface.RhiRedirectRenderTarget
The resource is a pointer to a QRhiTextureRenderTarget instance that is associated with the window and its
QQuickRenderControl
. The value is null when the window is not associated with aQQuickRenderControl
. Note that the value always reflects the main texture render target and it does not depend on the Qt Quick scene, meaning it does not take any additional texture-targeting render passes generated by ShaderEffect orQQuickItem
layers into account.QSGRendererInterface.PhysicalDeviceResource
The resource is a pointer to the pysical device object used by the scenegraph, when applicable. For example, a
VkPhysicalDevice *
. Note that with Vulkan the returned value is a pointer to the VkPhysicalDevice, not the handle itself.QSGRendererInterface.OpenGLContextResource
The resource is a pointer to the QOpenGLContext used by the scenegraph (on the render thread), when applicable.
QSGRendererInterface.DeviceContextResource
The resource is a pointer to the device context used by the scenegraph, when applicable. For example, a
ID3D11DeviceContext *
.QSGRendererInterface.CommandEncoderResource
The resource is a pointer to the currently active render command encoder object used by the scenegraph, when applicable. For example, a
MTLRenderCommandEncoder *
. This object has limited validity, and is only valid while the scene graph is recording a render pass for the next frame.QSGRendererInterface.VulkanInstanceResource
The resource is a pointer to the QVulkanInstance used by the scenegraph, when applicable.
QSGRendererInterface.RenderPassResource
The resource is a pointer to the main render pass used by the scenegraph, describing the color and depth/stecil attachments and how they are used. For example, a
VkRenderPass *
. Note that the value always reflects the main render target (either the on-screen window or the textureQQuickRenderControl
redirects to) and it does not depend on the Qt Quick scene, meaning it does not take any additional texture-targeting render passes generated by ShaderEffect orQQuickItem
layers into account.QSGRendererInterface.RedirectPaintDevice
The resource is a pointer to QPaintDevice instance that is associated with the window and its
QQuickRenderControl
. The value is null when the window is not associated with aQQuickRenderControl
.QSGRendererInterface.GraphicsQueueFamilyIndexResource
The resource is a pointer to the graphics queue family index used by the scenegraph, when applicable. With Vulkan, this is a pointer to a
uint32_t
index value.QSGRendererInterface.GraphicsQueueIndexResource
The resource is a pointer to the graphics queue index (uint32_t) used by the scenegraph, when applicable. With Vulkan, this is a pointer to a
uint32_t
index value, which in practice is the index of the VkQueue reported forCommandQueueResource
.
- class ShaderType#
Constant
Description
QSGRendererInterface.UnknownShadingLanguage
Not yet known due to no window and scenegraph associated
QSGRendererInterface.GLSL
GLSL or GLSL ES
QSGRendererInterface.HLSL
HLSL
QSGRendererInterface.RhiShader
Consumes QShader instances containing shader variants for multiple target languages and intermediate formats.
- class ShaderCompilationType#
Constant
Description
QSGRendererInterface.RuntimeCompilation
(inherits
enum.Flag
) Runtime compilation of shader source code is supportedQSGRendererInterface.OfflineCompilation
Pre-compiled bytecode supported
- class ShaderSourceType#
Constant
Description
QSGRendererInterface.ShaderSourceString
(inherits
enum.Flag
) Shader source can be provided as a string in the corresponding properties of ShaderEffectQSGRendererInterface.ShaderSourceFile
Local or resource files containing shader source code are supported
QSGRendererInterface.ShaderByteCode
Local or resource files containing shader bytecode are supported
- class RenderMode#
Constant
Description
QSGRendererInterface.RenderMode2D
Normal 2D rendering
QSGRendererInterface.RenderMode2DNoDepthBuffer
Normal 2D rendering with depth buffer disabled
QSGRendererInterface.RenderMode3D
Scene is rendered as part of a 3D graph
- getResource(window, resource)#
- Parameters:
window –
QQuickWindow
resource –
Resource
- Return type:
void
Queries a graphics
resource
inwindow
. Returns null when the resource in question is not supported or not available.When successful, the returned pointer is either a direct pointer to an interface, or a pointer to an opaque handle that needs to be dereferenced first (for example,
VkDevice dev = *static_cast<VkDevice *>(result)
). The latter is necessary since such handles may have sizes different from a pointer.Note
The ownership of the returned pointer is never transferred to the caller.
Note
This function must only be called on the render thread.
- getResource(window, resource)
- Parameters:
window –
QQuickWindow
resource – str
- Return type:
void
Queries a graphics resource.
resource
is a backend-specific key. This allows supporting any future resources that are not listed in the Resource enum.Note
The ownership of the returned pointer is never transferred to the caller.
Note
This function must only be called on the render thread.
- abstract graphicsApi()#
- Return type:
Returns the graphics API that is in use by the Qt Quick scenegraph.
Note
This function can be called on any thread.
- static isApiRhiBased(api)#
- Parameters:
api –
GraphicsApi
- Return type:
bool
Returns true if
api
is based on a graphics abstraction layer (QRhi) instead of directly calling the native graphics API.Note
This function can be called on any thread.
- abstract shaderCompilationType()#
- Return type:
Combination of
ShaderCompilationType
Returns a bitmask of the shader compilation approaches supported by the Qt Quick backend the application is using.
- abstract shaderSourceType()#
- Return type:
Combination of
ShaderSourceType
Returns a bitmask of the supported ways of providing shader sources in ShaderEffect items.
- abstract shaderType()#
- Return type:
Returns the shading language supported by the Qt Quick backend the application is using.