QSGRendererInterface Class
An interface providing access to some of the graphics API specific internals of the scenegraph. More...
Header: | #include <QSGRendererInterface> |
qmake: | QT += quick |
Since: | Qt 5.8 |
Public Types
enum | GraphicsApi { Unknown, Software, OpenGL, Direct3D12 } |
enum | Resource { DeviceResource, CommandQueueResource, CommandListResource, PainterResource } |
enum | ShaderCompilationType { RuntimeCompilation, OfflineCompilation } |
flags | ShaderCompilationTypes |
enum | ShaderSourceType { ShaderSourceString, ShaderSourceFile, ShaderByteCode } |
flags | ShaderSourceTypes |
enum | ShaderType { UnknownShadingLanguage, GLSL, HLSL } |
Public Functions
virtual | ~QSGRendererInterface() |
virtual void * | getResource(QQuickWindow *window, Resource resource) const |
virtual void * | getResource(QQuickWindow *window, const char *resource) const |
virtual GraphicsApi | graphicsApi() const = 0 |
virtual ShaderCompilationTypes | shaderCompilationType() const = 0 |
virtual ShaderSourceTypes | shaderSourceType() const = 0 |
virtual ShaderType | shaderType() const = 0 |
Detailed Description
An interface providing access to some of the graphics API specific internals of the scenegraph.
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, like graphicsApi() or shaderType() are always available, meaning it is sufficient to construct a QQuickWindow or QQuickView, and the graphics API or shading language in use can be queried right after via QQuickWindow::rendererInterface(). 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 instance shaderType() - 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 means QSGRenderNode::render().
Member Type Documentation
enum QSGRendererInterface::GraphicsApi
Constant | Value | Description |
---|---|---|
QSGRendererInterface::Unknown | 0 | An unknown graphics API is in use |
QSGRendererInterface::Software | 1 | The Qt Quick 2D Renderer is in use |
QSGRendererInterface::OpenGL | 2 | OpenGL ES 2.0 or higher |
QSGRendererInterface::Direct3D12 | 3 | Direct3D 12 |
enum QSGRendererInterface::Resource
Constant | Value | Description |
---|---|---|
QSGRendererInterface::DeviceResource | 0 | The graphics device, when applicable. |
QSGRendererInterface::CommandQueueResource | 1 | The graphics command queue used by the scenegraph, when applicable. |
QSGRendererInterface::CommandListResource | 2 | The command list or buffer used by the scenegraph, when applicable. |
QSGRendererInterface::PainterResource | 3 | The active QPainter used by the scenegraph, when running with the software backend. |
enum QSGRendererInterface::ShaderCompilationType
flags QSGRendererInterface::ShaderCompilationTypes
Constant | Value | Description |
---|---|---|
QSGRendererInterface::RuntimeCompilation | 0x01 | Runtime compilation of shader source code is supported |
QSGRendererInterface::OfflineCompilation | 0x02 | Pre-compiled bytecode supported |
The ShaderCompilationTypes type is a typedef for QFlags<ShaderCompilationType>. It stores an OR combination of ShaderCompilationType values.
enum QSGRendererInterface::ShaderSourceType
flags QSGRendererInterface::ShaderSourceTypes
Constant | Value | Description |
---|---|---|
QSGRendererInterface::ShaderSourceString | 0x01 | Shader source can be provided as a string in the corresponding properties of ShaderEffect |
QSGRendererInterface::ShaderSourceFile | 0x02 | Local or resource files containing shader source code are supported |
QSGRendererInterface::ShaderByteCode | 0x04 | Local or resource files containing shader bytecode are supported |
The ShaderSourceTypes type is a typedef for QFlags<ShaderSourceType>. It stores an OR combination of ShaderSourceType values.
enum QSGRendererInterface::ShaderType
Constant | Value | Description |
---|---|---|
QSGRendererInterface::UnknownShadingLanguage | 0 | Not yet known due to no window and scenegraph associated |
QSGRendererInterface::GLSL | 1 | GLSL or GLSL ES |
QSGRendererInterface::HLSL | 2 | HLSL |
Member Function Documentation
[virtual]
QSGRendererInterface::~QSGRendererInterface()
Destroys the instance of QSGRendererInterface. The destructor is virtual.
[virtual]
void *QSGRendererInterface::getResource(QQuickWindow *window, Resource resource) const
Queries a graphics resource. 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 (and can be cast, for example, to ID3D12Device *
) 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.
[virtual]
void *QSGRendererInterface::getResource(QQuickWindow *window, const char *resource) const
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.
[pure virtual]
GraphicsApi QSGRendererInterface::graphicsApi() const
Returns the graphics API that is in use by the Qt Quick scenegraph.
Note: This function can be called on any thread.
[pure virtual]
ShaderCompilationTypes QSGRendererInterface::shaderCompilationType() const
Returns a bitmask of the shader compilation approaches supported by the Qt Quick backend the application is using.
Note: This function can be called on any thread.
See also QtQuick::GraphicsInfo.
[pure virtual]
ShaderSourceTypes QSGRendererInterface::shaderSourceType() const
Returns a bitmask of the supported ways of providing shader sources in ShaderEffect items.
Note: This function can be called on any thread.
See also QtQuick::GraphicsInfo.
[pure virtual]
ShaderType QSGRendererInterface::shaderType() const
Returns the shading language supported by the Qt Quick backend the application is using.
Note: This function can be called on any thread.
See also QtQuick::GraphicsInfo.
© 2017 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.