Qt 3D

Qt 3D 提供了为近实时仿真系统提供功能,支持在 Qt C++ 和 Qt Quick 应用中执行 2D 和 3D 渲染。

Qt 3D 中的功能分为以下 C++ 模块

Qt 3D 核心C++类

Qt 3D 模块包含支持近实时仿真系统所需的功能。

Qt 3D 输入C++类

Qt 3D 输入模块为使用 Qt3D 的应用程序提供处理用户输入的类。

Qt 3D 逻辑C++类

Qt 3D 逻辑模块使帧与 Qt 3D 后端同步。

Qt 3D 渲染C++类

Qt 3D 渲染模块包含使用 Qt 3D 支持 2D 和 3D 渲染的功能。

以下 C++ 模块仍在开发中,但作为技术预览可用

Qt 3D 动画 C++ 类

Qt 3D 动画模块提供一系列预构建元素,帮助你开始使用 Qt 3D。

Qt 3D 扩展 C++ 类

Qt 3D 扩展模块提供一组预构建元素,帮助你开始使用 Qt 3D。

Qt 3D Scene2D C++ 类

Qt 3D Scene2D 模块提供了一种将 Quick2 qml 内容渲染到 Qt 3D 纹理的方法。

对于 Qt Quick 应用,Qt 3D 提供以下 QML 模块

Qt 3D 核心QML 类型

提供核心 Qt 3D QML 类型。

Qt 3D 输入QML 类型

提供 Qt 3D 用户输入的 QML 类型。

Qt 3D 逻辑QML 类型

提供用于与 3D 后端同步帧的 QML 类型。

Qt 3D 渲染QML 类型

提供 Qt 3D 渲染的 QML 类型。

以下 QML 模块仍在开发中,但作为技术预览可用

Qt 3D 扩展 QML 类型

提供 Qt 3D 扩展模块的 QML 类型。

Qt 3D Qt3DAnimation QML 类型

提供 Qt 3D 动画模块的 QML 类型。

Qt 3D Scene2D QML 类型

提供 Qt 3D scene2d 模块的 QML 类型。

Qt 3D Scene3D QML 类型

提供 Qt 3D Scene3D 模块的 QML 类型。

使用模块

对于执行 2D 或 3D 渲染、碰撞检测和处理用户输入的 C++ 应用程序,请包含以下模块类的指令

#include <Qt3DCore>
#include <Qt3DRender>
#include <Qt3DInput>
#include <Qt3DLogic>
#include <Qt3DExtras>
#include <Qt3DAnimation>

要将 QML 类型导入您的应用程序,请在您的 .qml 文件中使用以下导入语句

import Qt3D.Core
import Qt3D.Render
import Qt3D.Input
import Qt3D.Logic
import Qt3D.Extras
import Qt3D.Animation
import QtQuick.Scene2D
import QtQuick.Scene3D

使用 Qt 模块的 C++ API 需要链接到模块库,无论是直接链接还是通过其他依赖项。包括 CMake 和 qmake 在内,多个构建工具都对此提供了专用支持。

使用 CMake 构建

使用 find_package() 命令在 Qt6 包中定位所需的模块组件。

find_package(Qt6 REQUIRED COMPONENTS
    3DCore
    3DRender
    3DInput
    3DLogic
    3DExtras
    3DAnimation
)
target_link_libraries(mytarget PRIVATE
    Qt6::3DCore
    Qt6::3DRender
    Qt6::3DLogic
    Qt6::3DExtras
    Qt6::3DAnimation
)

使用 qmake 构建

要配置模块以使用 qmake 构建,请将模块添加到项目的 .pro 文件中的 QT 变量中

QT += 3dcore 3drender 3dinput 3dlogic 3dextras 3danimation

Qt Quick 应用程序需要额外的依赖项

QT += 3dcore 3drender 3dinput 3dlogic 3dextras 3danimation qml quick 3dquick

概览

Qt 3D 的高层次设计及其动机在Qt 3D 概览中描述。Qt 3D Render 提供了对数据驱动配置的支持,如Qt 3D Render Framegraph中所述。

参考

Qt 3D 平台支持

Qt 3D 支持以下平台

  • Microsoft Windows (win32) - 支持
  • Linux X11 - 支持
  • macOS - 支持,尽管可能存在一些视网膜缩放问题
  • Android - 支持
  • 嵌入式 Linux - 支持
  • iOS - 自 Qt 5.7 开始支持
  • WinRT - 尚不支持

模块演变

Qt3D 的变更列出了为 Qt 6 系列Qt所进行的,对模块 API 和功能的重要更改。

许可证和归属

Qt 3D 可在Qt 公司的商业许可证下获得。此外,它还可在GNU Lesser General Public License,版本 3GNU General Public License,版本 2下获得。有关更多详细信息,请参阅Qt 许可

此外,Qt 3D 包含第三方模块,这些模块下的许可如下

Dear ImGui - ProggyClean.ttf

MIT License

Dear ImGui - stb

MIT License 或公共领域

Dear ImGui,版本 v1.66b

MIT License

© 2024 The Qt Company Ltd. 本文档中的贡献归各自所有者所有。本文档符合由自由软件基金会发布并在GNU Free Documentation License 版本 1.3下的条款。Qt 和相应徽标是芬兰的 The Qt Company Ltd. 及/或其他国家和地区注册的商标。所有其他商标均为其各自所有者的财产。