本页内容

QQuickGraphicsDevice Class

QQuickGraphicsDevice 类提供了一个不透明容器,用于容纳代表图形设备或上下文的原生图形对象。更多...

头文件: #include <QQuickGraphicsDevice>
CMake: find_package(Qt6 REQUIRED COMPONENTS Quick)
target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake: QT += quick
自: Qt 6.0

公共函数

静态公共成员

QQuickGraphicsDevice fromAdapter(quint32 adapterLuidLow, qint32 adapterLuidHigh, int featureLevel = 0)
QQuickGraphicsDevice fromDeviceAndCommandQueue(MTLDevice *device, MTLCommandQueue *commandQueue)
QQuickGraphicsDevice fromDeviceAndContext(void *device, void *context)
QQuickGraphicsDevice fromDeviceObjects(VkPhysicalDevice physicalDevice, VkDevice device, int queueFamilyIndex, int queueIndex = 0)
QQuickGraphicsDevice fromOpenGLContext(QOpenGLContext *context)
QQuickGraphicsDevice fromPhysicalDevice(VkPhysicalDevice physicalDevice)
(since 6.6) QQuickGraphicsDevice fromRhi(QRhi *rhi)
(since 6.10) QQuickGraphicsDevice fromRhiAdapter(QRhiAdapter *adapter)

详细说明

另请参阅 QQuickWindow::setGraphicsDevice() 和QQuickRenderTarget 。

成员函数文档

QQuickGraphicsDevice::QQuickGraphicsDevice()

构建一个默认的 QQuickGraphicsDevice,该设备不引用任何本机对象。

[noexcept] QQuickGraphicsDevice::~QQuickGraphicsDevice()

析构函数。

[static] QQuickGraphicsDevice QQuickGraphicsDevice::fromAdapter(quint32 adapterLuidLow, qint32 adapterLuidHigh, int featureLevel = 0)

返回一个新的QQuickGraphicsDevice ,用于描述 DXGI 适配器和 D3D 功能级别。

此工厂函数适用于 Direct3D 11 和 12,特别是在与 OpenXR 结合使用时。adapterLuidLow 和adapterLuidHigh 共同指定一个 LUID,而 featureLevel 指定一个D3D_FEATURE_LEVEL_ 值。如果无需指定featureLevel ,可将其设为 0,此时将使用场景图的默认值。

注意:在 Direct 3D 12中, featureLevel 指定传递给 D3D12CreateDevice() 的minimum 功能级别。

[static] QQuickGraphicsDevice QQuickGraphicsDevice::fromDeviceAndCommandQueue(MTLDevice *device, MTLCommandQueue *commandQueue)

返回一个新的QQuickGraphicsDevice ,该对象引用了现有的device 和commandQueue 对象。

此工厂函数适用于 Metal。

注意:生成的 QQuickGraphicsDevice 不拥有任何原生资源,它仅包含引用。确保原生资源在必要时始终存在是调用方的责任。

[static] QQuickGraphicsDevice QQuickGraphicsDevice::fromDeviceAndContext(void *device, void *context)

返回一个引用本机设备和上下文对象的新QQuickGraphicsDevice 。

此工厂函数适用于 Direct3D 11。device 预期为ID3D11Device* ,context 预期为ID3D11DeviceContext* 。

如果运行时使用的 3D API 为 Direct3D 12,该函数也支持该版本。在 D3D12 中,context 未被使用,可将其设置为 null。device 预期为ID3D12Device* 。

注意:生成的 QQuickGraphicsDevice 不拥有任何本机资源,它仅包含引用。确保本机资源在必要时一直存在是调用方的责任。

[static] QQuickGraphicsDevice QQuickGraphicsDevice::fromDeviceObjects(VkPhysicalDevice physicalDevice, VkDevice device, int queueFamilyIndex, int queueIndex = 0)

返回一个新的QQuickGraphicsDevice ,该对象引用了一个现有的device 对象。

此工厂函数适用于 Vulkan。必须始终提供 `physicalDevice`、`device ` 和 `queueFamilyIndex `。`queueIndex ` 是可选的,因为默认值 0 通常已足够。

注意:生成的 QQuickGraphicsDevice 不拥有任何本机资源,它仅包含引用。确保本机资源在必要时始终存在是调用方的责任。

[static] QQuickGraphicsDevice QQuickGraphicsDevice::fromOpenGLContext(QOpenGLContext *context)

返回一个引用现有 OpenGLcontext 的新QQuickGraphicsDevice 。

此工厂函数适用于 OpenGL。

注意: 调用方需 确保context 与QQuickWindow 兼容且可正常使用。相关QSurfaceFormat 中存在的特定于平台的兼容性问题,或因在多个线程中尝试使用context 而导致的线程问题,均应由调用方负责避免。

[static] QQuickGraphicsDevice QQuickGraphicsDevice::fromPhysicalDevice(VkPhysicalDevice physicalDevice)

返回一个引用现有physicalDevice 的新QQuickGraphicsDevice 。

此工厂函数适用于 Vulkan,特别是在与 OpenXR 结合使用时。

注意:生成的 QQuickGraphicsDevice 并不拥有任何本机资源,它仅包含引用。确保本机资源在必要时始终存在是调用方的责任。

[static, since 6.6] QQuickGraphicsDevice QQuickGraphicsDevice::fromRhi(QRhi *rhi)

返回一个新的QQuickGraphicsDevice ,该对象引用一个现有的rhi 对象。

注意:与 fromOpenGLContext() 类似, 调用方必须注意仅在已知兼容的 QQuickWindow 之间共享QRhi (以及其底层的图形上下文或设备),且在多线程、像素格式等方面不得违反底层图形 API 的规则。

该函数于 Qt 6.6 中引入。

[static, since 6.10] QQuickGraphicsDevice QQuickGraphicsDevice::fromRhiAdapter(QRhiAdapter *adapter)

返回一个新的QQuickGraphicsDevice ,该对象引用了一个现有的adapter QRhiAdapter 对象。

不适用于那些QRhiAdapter 没有实际实现的QRhi 后端和图形 API。

对于 Direct 3D,该操作等同于fromAdapter();对于 Vulkan,则等同于fromPhysicalDevice()。

注意: adapter 不会被接管所有权 ,且其必须至少保持有效直至场景图初始化完成——这通常发生在关联的QQuickWindow 被暴露之时。

该函数在 Qt 6.10 中引入。

另请参阅 QRhi::enumerateAdapters()。

bool QQuickGraphicsDevice::isNull() const

如果这是一个未引用任何本机对象的默认构造图形设备,则返回 true。

© 2026 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.