QSGRendererInterface Class
scenegraphのグラフィックスAPI固有の内部へのアクセスを提供するインターフェース。詳細...
ヘッダー | #include <QSGRendererInterface> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Quick) target_link_libraries(mytarget PRIVATE Qt6::Quick) |
qmake: | QT += quick |
パブリックな型
enum | GraphicsApi { Unknown, Software, OpenVG, OpenGL, Direct3D11, …, Null } |
enum | RenderMode { RenderMode2D, RenderMode2DNoDepthBuffer, RenderMode3D } |
enum | Resource { DeviceResource, CommandQueueResource, CommandListResource, PainterResource, RhiResource, …, GraphicsQueueIndexResource } |
enum | ShaderCompilationType { RuntimeCompilation, OfflineCompilation } |
flags | ShaderCompilationTypes |
enum | ShaderSourceType { ShaderSourceString, ShaderSourceFile, ShaderByteCode } |
flags | ShaderSourceTypes |
enum | ShaderType { UnknownShadingLanguage, GLSL, HLSL, RhiShader } |
パブリック関数
virtual void * | getResource(QQuickWindow *window, QSGRendererInterface::Resource resource) const |
virtual void * | getResource(QQuickWindow *window, const char *resource) const |
virtual QSGRendererInterface::GraphicsApi | graphicsApi() const = 0 |
virtual QSGRendererInterface::ShaderCompilationTypes | shaderCompilationType() const = 0 |
virtual QSGRendererInterface::ShaderSourceTypes | shaderSourceType() const = 0 |
virtual QSGRendererInterface::ShaderType | shaderType() const = 0 |
静的パブリックメンバ
bool | isApiRhiBased(QSGRendererInterface::GraphicsApi api) |
詳細説明
Renderer インターフェースは、シーングラフ内のグラフィックス API 固有の機能にアクセスできるようにします。このような内部は通常公開されません。しかし、例えば、QSGRenderNode を介してカスタムレンダリングを統合する場合、特定の値、例えば、シーングラフで使用されるグラフィックデバイス(例えば、Direct3D や Vulkan デバイス)をクエリする必要があるかもしれません。
QSGRendererInterfaceの関数には、さまざまな利用可能性があります。graphicsApi shaderTypeつまり、QQuickWindow またはQQuickView を作成すれば十分で、QQuickWindow::rendererInterface() を介して、その直後に使用中のグラフィックス API またはシェーディング言語をクエリできます。これにより、GraphicsInfo QML型のようなユーティリティは、shaderType()などに依存する条件付きプロパティ値が予期せぬ値に評価されることなく、できるだけ早い段階で正しい値を報告できることが保証されます。
しかし、getResource()のようなエンジン固有のアクセ サは、シーングラフが初期化された後にしか利用できません。さらに、このような関数が呼び出されるタイミングには、バックエンド固有の制限があるかもしれません。確実に成功する唯一の方法は、ノードのレンダリング(つまり、次のフレームのコマンドリストの準備)がアクティブなときに呼び出すことです。実際には、これは通常QSGRenderNode::render() を意味する。
メンバ型ドキュメント
enum QSGRendererInterface::GraphicsApi
定数 | 値 | 説明 |
---|---|---|
QSGRendererInterface::Unknown | 0 | 不明なグラフィックス API が使用されている |
QSGRendererInterface::Software | 1 | Qt Quick 2D Renderer を使用しています。 |
QSGRendererInterface::OpenVG | 2 | EGL経由のOpenVG |
QSGRendererInterface::OpenGL (since Qt 5.14) | 3 | グラフィックス抽象化レイヤーを介したOpenGL ES 2.0以上。 |
QSGRendererInterface::Direct3D11 (since Qt 5.14) | 4 | グラフィックス抽象化レイヤーを介した Direct3D 11。 |
QSGRendererInterface::Direct3D12 (since Qt 6.6) | 8 | グラフィックス抽象化レイヤーを介したDirect3D 12。 |
QSGRendererInterface::Vulkan (since Qt 5.14) | 5 | グラフィックス抽象化レイヤーを介したVulkan 1.0。 |
QSGRendererInterface::Metal (since Qt 5.14) | 6 | グラフィックス抽象化レイヤーを介したMetal。 |
QSGRendererInterface::Null (since Qt 5.14) | 7 | グラフィックス抽象化レイヤーを介したNull(出力なし)。 |
enum QSGRendererInterface::RenderMode
定数 | 値 | 説明 |
---|---|---|
QSGRendererInterface::RenderMode2D | 0 | 通常の2Dレンダリング |
QSGRendererInterface::RenderMode2DNoDepthBuffer | 1 | 深度バッファを無効にした通常の2Dレンダリング |
QSGRendererInterface::RenderMode3D | 2 | シーンは3Dグラフの一部としてレンダリングされる。 |
enum QSGRendererInterface::Resource
定数 | 値 | 説明 |
---|---|---|
QSGRendererInterface::DeviceResource | 0 | リソースは、該当する場合、グラフィックスデバイスへのポインタです。例えば、VkDevice * 、MTLDevice * またはID3D11Device * 。Vulkanの場合、返される値はハンドルそのものではなく、VkDeviceへのポインタであることに注意してください。これは、Vulkanのハンドルがポインタではない可能性があり、アーキテクチャのポインタサイズとは異なるサイズを使用する可能性があるためで、単にvoid * への/からのキャストは間違っています。 |
QSGRendererInterface::CommandQueueResource | 1 | リソースは、該当する場合、scenegraphによって使用されるグラフィックコマンドキューへのポインタです。例えば、VkQueue * またはMTLCommandQueue * 。 Vulkanでは、返される値はハンドルそのものではなく、VkQueueへのポインタであることに注意してください。 |
QSGRendererInterface::CommandListResource | 2 | リソースは、該当する場合、シーングラフによって使用されるコマンドリストまたはバッファへのポインタです。例えば、VkCommandBuffer * やMTLCommandBuffer * などです。このオブジェクトの有効期限は限られており、シーングラフが次のフレームを準備している間のみ有効です。Vulkanでは、返される値はハンドルそのものではなく、VkCommandBufferへのポインタであることに注意してください。 |
QSGRendererInterface::PainterResource | 3 | リソースは、ソフトウェアバックエンドで実行されている場合、シーングラフによって使用されるアクティブなQPainter へのポインタです。 |
QSGRendererInterface::RhiResource (since Qt 5.14) | 4 | リソースは、QRhi インスタンスへのポインタです。 |
QSGRendererInterface::RhiSwapchainResource (since Qt 6.0) | 5 | リソースは、ウィンドウに関連するQRhiSwapchainインスタンスへのポインタである。ウィンドウがQQuickRenderControl と組み合わせて使用される場合、この値はNULLである。 |
QSGRendererInterface::RhiRedirectCommandBuffer (since Qt 6.0) | 6 | リソースは、ウィンドウとそのQQuickRenderControl に関連付けられたQRhiCommandBuffer インスタンスへのポインタである。ウィンドウがQQuickRenderControl と関連付けられていない場合、値はnullである。 |
QSGRendererInterface::RhiRedirectRenderTarget (since Qt 6.0) | 7 | リソースは、ウィンドウとそのQQuickRenderControl に関連付けられたQRhiTextureRenderTarget インスタンスへのポインタである。ウィンドウがQQuickRenderControl に関連付けられていない場合、値は NULL です。値は常にメイン テクスチャ レンダー ターゲットを反映し、Qt Quick シーンに依存しないことに注意してください。つまり、ShaderEffect またはQQuickItem レイヤーによって生成される追加のテクスチャ ターゲット レンダー パスは考慮されません。 |
QSGRendererInterface::PhysicalDeviceResource (since Qt 5.14) | 8 | リソースは、該当する場合、シーングラフによって使用される物理デバイスオブジェクトへのポインタです。例えば、VkPhysicalDevice * 。 Vulkanでは、返される値は、ハンドル自体ではなく、VkPhysicalDeviceへのポインタであることに注意してください。 |
QSGRendererInterface::OpenGLContextResource (since Qt 5.14) | 9 | リソースは、該当する場合、シーングラフ(レンダースレッド上)で使用されるQOpenGLContext へのポインタです。 |
QSGRendererInterface::DeviceContextResource (since Qt 5.14) | 10 | リソースは、該当する場合、シーングラフによって使用されるデバイスコンテキストへのポインタである。例えば、ID3D11DeviceContext * 。 |
QSGRendererInterface::CommandEncoderResource (since Qt 5.14) | 11 | リソースは、該当する場合、シーングラフによって使用される現在アクティブなレンダーコマンドエンコーダオブジェクトへのポインタである。例えば、MTLRenderCommandEncoder * 。 このオブジェクトは、有効期限があり、シーングラフが次のフレームのレンダーパスを記録している間だけ有効である。 |
QSGRendererInterface::VulkanInstanceResource (since Qt 5.14) | 12 | リソースは、該当する場合、シーングラフによって使用されるQVulkanInstance へのポインタである。 |
QSGRendererInterface::RenderPassResource (since Qt 5.14) | 13 | リソースは、シーングラフによって使用されるメインレンダーパスへのポインタであり、カラーとデプス/ステシルアタッチメントとそれらがどのように使用されるかを記述する。例えば、VkRenderPass * 。値は、常にメインレンダーターゲット(画面上のウィンドウか、QQuickRenderControl リダイレクト先のテクスチャ)を反映し、Qt Quick シーンに依存しないことに注意してください。つまり、ShaderEffect やQQuickItem レイヤーによって生成された追加のテクスチャターゲットレンダーパスを考慮しません。 |
QSGRendererInterface::RedirectPaintDevice (since Qt 6.4) | 14 | リソースは、ウィンドウとそのQQuickRenderControl に関連付けられているQPaintDevice インスタンスへのポインタです。ウィンドウがQQuickRenderControl に関連付けられていない場合、値はNULLである。 |
QSGRendererInterface::GraphicsQueueFamilyIndexResource (since Qt 6.6) | 15 | リソースは、該当する場合、シーングラフによって使用されるグラフィックキューファミリーインデックスへのポインタです。Vulkanでは、これはuint32_t インデックス値へのポインタです。 |
QSGRendererInterface::GraphicsQueueIndexResource (since Qt 6.6) | 16 | リソースは、該当する場合、シーングラフによって使用されるグラフィックキューインデックス(uint32_t)へのポインタです。Vulkanでは、これはuint32_t インデックス値へのポインタであり、実際にはCommandQueueResource のために報告されたVkQueueのインデックスです。 |
enum QSGRendererInterface::ShaderCompilationType
flags QSGRendererInterface::ShaderCompilationTypes
定数 | 値 | 説明 |
---|---|---|
QSGRendererInterface::RuntimeCompilation | 0x01 | シェーダソースコードのランタイムコンパイルがサポートされている |
QSGRendererInterface::OfflineCompilation | 0x02 | プリコンパイルされたバイトコードがサポートされる |
ShaderCompilationTypes型はQFlags<ShaderCompilationType>のtypedefです。これは、ShaderCompilationType 値の OR の組み合わせを格納します。
enum QSGRendererInterface::ShaderSourceType
flags QSGRendererInterface::ShaderSourceTypes
定数 | 値 | 説明 |
---|---|---|
QSGRendererInterface::ShaderSourceString | 0x01 | シェーダーソースは、以下のプロパティで文字列として指定します。ShaderEffect |
QSGRendererInterface::ShaderSourceFile | 0x02 | シェーダソースコードを含むローカルファイルまたはリソースファイルがサポートされます。 |
QSGRendererInterface::ShaderByteCode | 0x04 | シェーダーのバイトコードを含むローカルファイルまたはリソースファイルがサポートされています。 |
ShaderSourceTypes型はQFlags<ShaderSourceType>のtypedefです。ShaderSourceTypeの値のORの組み合わせを格納します。
enum QSGRendererInterface::ShaderType
定数 | 値 | 説明 |
---|---|---|
QSGRendererInterface::UnknownShadingLanguage | 0 | ウィンドウとシーングラフが関連付けられていないため、未確認 |
QSGRendererInterface::GLSL | 1 | GLSLまたはGLSL ES |
QSGRendererInterface::HLSL | 2 | HLSL |
QSGRendererInterface::RhiShader (since Qt 5.14) | 3 | 複数のターゲット言語と中間フォーマット用のシェーダーバリアントを含むQShader インスタンスを消費します。 |
メンバー関数ドキュメント
[virtual]
void *QSGRendererInterface::getResource(QQuickWindow *window, QSGRendererInterface::Resource resource) const
window のグラフィックスresource に問い合わせる。該当のリソースがサポートされていないか、利用できない場合は null を返す。
成功した場合、返されるポインタは、インタフェースへの直接のポインタか、最初に参照解除が必要な不透明なハンドルへのポインタ(例えば、VkDevice dev = *static_cast<VkDevice *>(result)
)のいずれかである。後者は、そのようなハンドルのサイズがポインタと異なる場合があるため、必要である。
注意: 返されたポインタの所有権は、呼び出し元には決して移らない。
注意: この関数はレンダースレッド上でのみ呼び出されなければならない。
[virtual]
void *QSGRendererInterface::getResource(QQuickWindow *window, const char *resource) const
resource はバックエンド固有のキー。これにより、Resource enum にリストされていない将来のリソースをサポートすることができます。
注意: 返されたポインタの所有権は、呼び出し元には決して移りません。
注意 : この関数は、レンダリングスレッドでのみ呼び出す必要があります。
[pure virtual]
QSGRendererInterface::GraphicsApi QSGRendererInterface::graphicsApi() const
Qt Quick scenegraph で使用されているグラフィックス API を返します。
注意: この関数は、どのスレッドでも呼び出すことができます。
[static]
bool QSGRendererInterface::isApiRhiBased(QSGRendererInterface::GraphicsApi api)
api が、ネイティブ・グラフィックス API を直接呼び出すのではなく、 グラフィックス抽象化レイヤ (QRhi) に基づいている場合、true を返す。
注意: この関数はどのスレッドでも呼び出すことができます。
[pure virtual]
QSGRendererInterface::ShaderCompilationTypes QSGRendererInterface::shaderCompilationType() const
アプリケーションが使用しているQt Quick バックエンドがサポートするシェーダーコンパイルアプローチのビットマスクを返します。
注意: この関数はどのスレッドでも呼び出すことができます。
QtQuick::GraphicsInfoも参照してください 。
[pure virtual]
QSGRendererInterface::ShaderSourceTypes QSGRendererInterface::shaderSourceType() const
ShaderEffect アイテムでシェーダー・ソースを提供するサポートされた方法のビットマスクを返します。
注意: この関数はどのスレッドでも呼び出すことができます。
QtQuick::GraphicsInfoも参照してください 。
[pure virtual]
QSGRendererInterface::ShaderType QSGRendererInterface::shaderType() const
アプリケーションが使用しているQt Quick バックエンドがサポートするシェーディング言語を返します。
注意: この関数はどのスレッドでも呼び出すことができます。
QtQuick::GraphicsInfoも参照してください 。
© 2025 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.