QQuickGraphicsDevice Class

QQuickGraphicsDevice 类为代表图形设备或上下文的本地图形对象提供了一个不透明容器。更多

Header: #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)

详细描述

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

成员函数文档

QQuickGraphicsDevice::QQuickGraphicsDevice()

构造一个不引用任何本地对象的默认 QQuickGraphicsDevice。

[noexcept] QQuickGraphicsDevice::~QQuickGraphicsDevice()

毁灭者

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

返回一个描述 DXGI 适配器和 D3D 特征级别的新QQuickGraphicsDevice

该工厂函数适用于 Direct3D 11 和 12,特别是与 OpenXR 结合使用时。adapterLuidLowadapterLuidHigh 一起指定了一个 LUID,而 featureLevel 指定了一个D3D_FEATURE_LEVEL_ 值。如果不打算指定,featureLevel 可以设置为 0,在这种情况下将使用场景图的默认值。

注: 在 Direct 3D 12 中,featureLevel 指定了传递给 D3D12CreateDevice() 的minimum 特征级别。

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

返回引用现有devicecommandQueue 对象的新QQuickGraphicsDevice

该工厂函数适用于 Metal。

注意: 生成的QQuickGraphicsDevice 并不拥有任何本地资源,它只包含引用。调用者有责任确保本地资源的存在时间。

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

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

该工厂函数适用于 Direct3D 11。device 预计是ID3D11Device*context 预计是ID3D11DeviceContext*

它还支持 Direct 3D 12(如果运行时使用的是该 3D API)。对于 D3D12,context 未使用,可设置为空。device 预计为ID3D12Device*

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

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

返回引用现有device 对象的新QQuickGraphicsDevice

该工厂函数适用于 Vulkan。physicalDevice device queueFamilyIndex queueIndex 是可选项,因为默认值 0 通常是合适的。

注意: 生成的QQuickGraphicsDevice 并不拥有任何本地资源,它只包含引用。调用者有责任在必要时确保本地资源的存在。

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

返回引用现有 OpenGLcontext 的新QQuickGraphicsDevice

该工厂函数适用于 OpenGL。

注意: 调用者应确保contextQQuickWindow 兼容和可用。调用者应避免在相关QSurfaceFormat 中出现与特定平台不匹配的情况,或因尝试在多个线程上使用context 而产生线程问题。

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

返回引用现有physicalDevice 的新QQuickGraphicsDevice

该工厂函数适用于 Vulkan,尤其是与 OpenXR 结合使用时。

注意: 生成的QQuickGraphicsDevice 并不拥有任何本地资源,它只包含引用。调用者有责任在必要时确保本地资源的存在。

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

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

注意: fromOpenGLContext() 类似,调用者必须注意只在已知兼容的 QQuickWindows 之间共享QRhi (以及底层图形上下文或设备),而不能在涉及到线程、像素格式等时破坏底层图形 API 的规则。

此功能在 Qt 6.6 中引入。

bool QQuickGraphicsDevice::isNull() const

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

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