图形

跨平台应用可以使用 Qt 来显示图形元素。Qt 抽象了平台底层的图形 API,使开发者可以集中于应用代码。

Qt 渲染硬件接口 (RHI) 将 Qt 应用中的 3D 图形调用转换为目标平台上可用的图形 API。

支持的图形 API 有

  • OpenGL(版本 2.1 及更高版本)
  • OpenGL ES(版本 2.0 及更高版本)
  • Vulkan(版本 1.0 及更高版本)
  • Direct3D 11(版本 11.1 及更高版本)
  • Direct3D 12(版本 12.0 及更高版本)
  • Metal(版本 1.2 及更高版本)

Qt Quick 中的图形

Qt Quick 应用使用场景图进行渲染。场景图渲染器可以创建高效的图形调用并提高性能。场景图有一个可访问的 API,它提供了创建复杂但快速的图形的灵活性。

以下列表中的页面包含有关渲染 Qt Quick 应用更多的信息。

选择渲染通道

Qt 尽可能使用目标平台的图形 API,但也可以设置 Qt 的特定渲染路径使用某种 API。在许多情况下,选择特定 API 可以提高性能并允许开发者部署具有特定图形 API 的平台。请参阅通过 Qt 渲染硬件接口进行渲染页面,了解如何在 QQuickWindow 中设置渲染路径。

Qt Quick 3D 中的 3D 图形

Qt Quick 3D 是一个附加组件,它提供了一个基于 Qt Quick 的高级别 API,用于创建 3D 内容和 3D 用户界面。它扩展了 Qt Quick 场景图,允许您在二维 Qt Quick 应用中实现 3D 内容。

着色器效果

《Qt 着色器工具》提供了一个工具 QSB,可以将顶点和片段着色器转换为 Qt Quick 接口的包。特别是,ShaderEffect QML 类型以及 QSGMaterial 子类可以使用 QSB 的输出。《Qt Quick 3D》有自己的框架,可以将着色器导入到 3D 场景中。

以下列表包含有关着色器效果的信息。

使用 Qt GUI 的高级图形

Qt GUI 提供了一个高级窗口、绘制和排印系统。 QPainter 提供了绘制矢量图形、文本和图像到不同表面或 QPaintDevice 实例的 API,例如 QImageQOpenGLPaintDeviceQWidgetQPrinter。对于使用 Qt 小部件用户界面的应用程序,Qt 使用软件渲染器。

以下列表包含有关 Qt GUI 高级绘制 API 的信息。

使用 Qt GUI 的高级图形

Qt GUI 提供跨平台启用器来管理 OpenGL 上下文和 Vulkan 实例。直接使用 OpenGL、OpenGL ES 或 Vulkan 进行渲染的应用程序可以使用 QOpenGLContextQOpenGLFunctionsQVulkanInstanceQVulkanFunctionsQVulkanDeviceFunctions 以便携的方式管理上下文、实例,并访问 OpenGL 和 Vulkan API 函数。

Qt GUI 还提供 Qt 渲染硬件接口 (RHI) 系列的 API,例如 QRhiQShader,供希望使用 Qt 本身使用的便携、跨平台的 3D 渲染基础设施进行渲染的应用程序使用。这些类提供为“半公开”的 API,并暂时提供有限的兼容性保证,类似于 Qt 平台抽象 类。然而,QRhi 类提供了完整文档。有关使用说明,请参阅 QRhi 类。

Qt GUI 模块本身允许目标处于 QWindow 或后台缓冲区,例如 QRhiTexture,使用基于 QRhi 的渲染。对于基于 QWidget 或 QML(Qt Quick)的用户界面与由本地平台支持的后台 QWindow 一起使用,并不总是最方便的方式。这就是为什么 Qt 小部件 模块提供 QRhiWidget,而 Qt Quick 提供了 QQuickRhiItem。这些基类允许方便地创建 QWidgetQQuickItem 子类,其实例可在纹理中进行可移植的基于 QRhi 的渲染,然后自动与 Widgets 或 Qt Quick 场景合成。

Qt OpenGL 模块

Qt OpenGL 模块是为需要 OpenGL 访问的应用程序设计的。此模块用于维护与 Qt 5 应用程序和 Qt GUI 的兼容性。对于使用 QWidget 的用户界面,QOpenGLWidget 是可以添加 OpenGL 场景的部件。

打印

Qt 支持直接将打印任务发送到实际打印机(本地或网络上),以及生成 PDF 输出。在 Qt 打印支持 页面上详细描述了如何使用 Qt 进行打印。

图像

Qt支持通过QImage类方便地读取、写入和操作图像。此外,为了更细致地控制图像的加载或保存方式,您可以使用QImageReaderQImageWriter类分别进行。对于使用Qt未提供的其他图像格式,可以通过使用QImageIOHandlerQImageIOPlugin创建图像格式插件来添加对这些格式的支持。

有关更多信息,请参阅读取和写入图像文件页面。

© 2024 Qt公司有限公司。本文件中包含的文档贡献的版权属于各自的拥有者。本文件中提供的文档根据自由软件基金会发布并由其出版的GNU自由文档许可版1.3许可。Qt及其相关商标是芬兰和其他国家/地区的Qt公司 Ltd的商标。所有其他商标归其各自的所有者所有。