Qt 3D Render C++ Classes

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

自 6.8 版起,该模块已被弃用。我们强烈建议不要在新代码中使用该模块。

命名空间

Qt3DRender

包含支持 2D 和 3D 渲染的类

Qt3DRender::Render

用于访问 Renderer 和 QRenderPlugin 类的命名空间

Qt3DRender::QAbstractLight

Qt 3D 场景中封装 QAbstractLight 对象

Qt3DRender::QAbstractRayCaster

三维场景中光线投射的抽象基类

Qt3DRender::QAbstractTexture

用于提供纹理的基类

Qt3DRender::QAbstractTextureImage

封装了创建 OpenGL 纹理图像的必要信息

Qt3DRender::QAlphaCoverage

启用阿尔法覆盖多重采样模式

Qt3DRender::QAlphaTest

指定 alpha 参考测试

Qt3DRender::QBlendEquation

指定用于 RGB 混合方程和 Alpha 混合方程的等式

Qt3DRender::QBlendEquationArguments

封装混合信息:指定输入值(即将绘制的内容)如何影响现有值(已绘制的内容)

Qt3DRender::QBlitFramebuffer

FrameGraph 节点用于将像素值矩形从渲染目标的一个区域传输到另一个区域

Qt3DRender::QBufferCapture

在 GPU 和 CPU 之间交换缓冲区数据

Qt3DRender::QCamera

定义一个视点,通过该视点渲染场景

Qt3DRender::QCameraLens

Qt3DRender::QCameraLens 指定投影矩阵,用于为 3D 场景定义相机

Qt3DRender::QCameraSelector

允许选择要使用的相机的类

Qt3DRender::QClearBuffers

用于清除缓冲区的类

Qt3DRender::QClipPlane

使用 gl_ClipDistance 在着色器中启用额外的 OpenGL 剪贴平面

Qt3DRender::QColorMask

允许指定哪些颜色组件应被写入当前绑定的帧缓冲区

Qt3DRender::QComputeCommand

为 GPU 上的计算着色器发布工作的 QComponent

Qt3DRender::QCullFace

指定启用正面还是背面剔除

Qt3DRender::QDebugOverlay

启用场景细节视觉叠加

Qt3DRender::QDepthRange

启用重映射写入深度缓冲区的深度值

Qt3DRender::QDepthTest

根据写入样本的深度测试片段着色器的深度值

Qt3DRender::QDirectionalLight

Qt 3D 场景中封装定向光对象

Qt3DRender::QDispatchCompute

为 GPU 上的计算着色器发布工作的 FrameGraph 节点

Qt3DRender::QDithering

启用抖动

Qt3DRender::QEffect

Qt 3D 场景中特效的基类

Qt3DRender::QEnvironmentLight

Qt 3D 场景中封装环境光对象

Qt3DRender::QFilterKey

存储滤镜键及其值

Qt3DRender::QFrameGraphNode

所有 FrameGraph 配置节点的基类

Qt3DRender::QFrontFace

定义前后多边形

Qt3DRender::QFrustumCulling

为 FrameGraph 启用凹面剔除功能

Qt3DRender::QGeometryRenderer

封装几何图形渲染

Qt3DRender::QGraphicsApiFilter

确定附加 QTechnique 所需的 API

Qt3DRender::QLayer

过滤将被渲染的实体的方法

Qt3DRender::QLayerFilter

控制在框架图形分支中绘制的图层

Qt3DRender::QLevelOfDetail

根据屏幕尺寸控制渲染实体复杂度的方法

Qt3DRender::QLevelOfDetailBoundingSphere

由中心和半径定义的简单球形体积

Qt3DRender::QLevelOfDetailSwitch

提供一种根据距离或屏幕尺寸启用子实体的方法

Qt3DRender::QLineWidth

指定光栅化线条的宽度

Qt3DRender::QMaterial

提供一个抽象类,作为场景中所有材质组件类的基础

Qt3DRender::QMemoryBarrier

用于设置内存障碍的类

Qt3DRender::QMesh

自定义网格加载器

Qt3DRender::QMultiSampleAntiAliasing

启用多采样抗锯齿

Qt3DRender::QNoDepthMask

禁用深度写入

Qt3DRender::QNoDraw

当一个 Qt3DRender::QNoDraw 节点出现在一个 FrameGraph 分支中时,这会阻止渲染器渲染任何基元。

Qt3DRender::QNoPicking

当一个 Qt3DRender::QNoPicking 节点出现在一个 FrameGraph 分支中时,这会阻止渲染器对给定的分支执行拾取选择。

Qt3DRender::QObjectPicker

实例化一个组件,该组件可用于通过称为 "拾取 "的过程与 QEntity 进行交互

Qt3DRender::QPaintedTextureImage

可通过 QPainter 写入的 QAbstractTextureImage(抽象纹理图像

Qt3DRender::QParameter

为名称和值对提供存储空间。这将映射到着色器统一

Qt3DRender::QPickEvent

在对象被拾取时保存信息

Qt3DRender::QPickLineEvent

选取线段时保存信息

Qt3DRender::QPickPointEvent

选取点云的一段时保存信息

Qt3DRender::QPickTriangleEvent

选取三角形时的信息

Qt3DRender::QPickingProxy

可用于提供仅用于拾取的替代 QGeometryView

Qt3DRender::QPickingSettings

指定如何处理实体拾取

Qt3DRender::QPointLight

Qt 3D 场景中封装点光源对象

Qt3DRender::QPointSize

指定光栅化点的大小。可静态设置或由着色器程序设置

Qt3DRender::QPolygonOffset

设置计算多边形偏移深度值的比例和步骤

Qt3DRender::QProximityFilter

选择目标实体距离阈值内的实体

Qt3DRender::QRasterMode

渲染状态允许控制要执行的光栅化类型

Qt3DRender::QRayCaster

Qt3DRender::QRayCaster 用于在三维世界坐标中执行光线投射测试

Qt3DRender::QRayCasterHit

通过模型投射光线时的命中细节

Qt3DRender::QRenderAspect

Qt3DRender::QRenderCapabilities

保存与可用渲染引擎相关的设置

Qt3DRender::QRenderCapture

用于渲染捕捉的帧图节点

Qt3DRender::QRenderCaptureReply

接收渲染捕捉请求的结果

Qt3DRender::QRenderPass

封装一个渲染通道

Qt3DRender::QRenderPassFilter

为滤镜键和参数矢量提供存储空间

Qt3DRender::QRenderSettings

保存与渲染过程相关的设置,并托管活动的框架图

Qt3DRender::QRenderState

所有渲染状态的抽象基类

Qt3DRender::QRenderStateSet

FrameGraph 节点提供了一种指定 QRenderState 对象集的方法,以便在执行帧图分支时应用该对象集

Qt3DRender::QRenderSurfaceSelector

提供一种指定渲染表面的方法

Qt3DRender::QRenderTarget

封装一个目标(通常是一个帧缓冲区对象),渲染器可将其渲染到该目标中

Qt3DRender::QRenderTargetOutput

允许指定渲染目标的附件(无论是色彩纹理还是深度纹理等......)。

Qt3DRender::QRenderTargetSelector

提供指定渲染目标的方法

Qt3DRender::QSceneLoader

提供加载现有场景的功能

Qt3DRender::QScissorTest

丢弃超出屏幕特定矩形范围的片段

Qt3DRender::QScreenRayCaster

基于屏幕坐标进行光线投射测试

Qt3DRender::QSeamlessCubemap

启用无缝立方体贴图纹理过滤功能

Qt3DRender::QSetFence

FrameGraphNode 用于在图形命令流中插入栅栏

Qt3DRender::QShaderData

提供指定统一块或着色器结构值的方法

Qt3DRender::QShaderImage

提供对着色器程序的图像访问

Qt3DRender::QShaderProgram

封装着色器程序

Qt3DRender::QShaderProgramBuilder

从加载的图形中生成着色器程序内容

Qt3DRender::QSharedGLTexture

允许在Qt 3D 场景中使用来自单独 OpenGL 上下文的纹理 ID

Qt3DRender::QSortPolicy

为要使用的排序类型提供存储空间

Qt3DRender::QSpotLight

Qt 3D 场景中封装聚光灯对象

Qt3DRender::QStencilMask

控制模板平面中各个位的前后写入

Qt3DRender::QStencilOperation

指定模板操作

Qt3DRender::QStencilOperationArguments

设置模版和深度测试失败时要采取的措施

Qt3DRender::QStencilTest

指定模版测试的参数

Qt3DRender::QStencilTestArguments

指定钢网测试的参数

Qt3DRender::QSubtreeEnabler

启用或禁用帧图节点的整个子树

Qt3DRender::QTechnique

封装技术

Qt3DRender::QTechniqueFilter

用于选择要使用的 Q 技术的 QFrameGraphNode

Qt3DRender::QTexture1D

具有 Target1D 目标格式的 QAbstractTexture(抽象纹理

Qt3DRender::QTexture1DArray

目标格式为 Target1DArray 的 QAbstractTexture(抽象纹理

Qt3DRender::QTexture2D

目标格式为 Target2D 的 QAbstractTexture(抽象纹理

Qt3DRender::QTexture2DArray

目标格式为 Target2DArray 的 QAbstractTexture(抽象纹理

Qt3DRender::QTexture2DMultisample

目标格式为 Target2DMultisample 的 QAbstractTexture(抽象纹理

Qt3DRender::QTexture2DMultisampleArray

目标格式为 Target2DMultisampleArray 的 QAbstractTexture(抽象纹理

Qt3DRender::QTexture3D

目标格式为 Target3D 的 QAbstractTexture(抽象纹理

Qt3DRender::QTextureBuffer

目标格式为 TargetBuffer 的 QAbstractTexture(抽象纹理

Qt3DRender::QTextureCubeMap

目标格式为 TargetCubeMap 的 QAbstractTexture 三维抽象纹理

Qt3DRender::QTextureCubeMapArray

目标格式为 TargetCubeMapArray 的 QAbstractTexture

Qt3DRender::QTextureData

存储纹理信息,如目标、高度、宽度、深度、图层、包边以及是否启用了 mipmaps

Qt3DRender::QTextureDataUpdate

保存对纹理内容进行部分更新所需的内容和信息

Qt3DRender::QTextureGenerator

为纹理提供图像数据

Qt3DRender::QTextureImage

封装从图像源创建 OpenGL 纹理图像所需的信息

Qt3DRender::QTextureImageData

存储表示纹理的数据

Qt3DRender::QTextureImageDataGenerator

为 QAbstractTextureImage 提供纹理图像数据

Qt3DRender::QTextureLoader

处理纹理加载和纹理属性设置

Qt3DRender::QTextureRectangle

目标格式为 TargetRectangle 的 QAbstractTexture

Qt3DRender::QTextureWrapMode

定义 Qt3DRender::QAbstractTexture 应用于纹理的包边模式

Qt3DRender::QViewport

Qt3D 场景上的视口

Qt3DRender::QWaitFence

帧图节点(FrameGraphNode),用于等待图形命令流中的栅栏成为信号

详细说明

Qt 3D Render 模块提供了实现 2D 和 3D 渲染所需的方面、组件和其他支持类型,作为Qt 3D 框架的一部分。

要使用该模块的类,请在 C++ 文件中添加此指令:

#include <Qt3DRender>

要与相应的 C++ 库链接,请在 qmake 项目文件中添加以下内容:

QT += 3drender

类、类型和函数在Qt3DRender 命名空间下声明。

概述

Qt 3D 渲染功能支持数据驱动配置,如Qt 3D 渲染框架图所述。

选择渲染后端

渲染方面有两个渲染后端。

  • OpenGL 后端(ES 2、ES 3.2、GL 2、GL 3、GL 3.2、GL 4.3)
  • RHI 后端(ES 2、GL、DirectX、Vulkan、Metal)

如果您的目标完全是 OpenGL 并使用特定的 OpenGL 功能,那么您最好使用 OpenGL 后端。这是Qt 3D 在 Qt 5 系列中独家使用的 OpenGL 后端。

如果您不使用特定的 OpenGL 功能,但又想针对可能已废弃 OpenGL 的不同平台,那么使用 RHI 后端是更好的选择。

要选择渲染后端,环境变量 QT3D_RENDERER 应设置为 "opengl "或 "rhi"。默认为 OpenGL 后端。

使用 RHI 后端时,可通过将 QSG_RHI_BACKEND 设置为以下值之一,进一步强制使用内部 RHI 后端:

  • opengl -> RHI OpenGL 后端
  • gl -> RHI OpenGL 后端
  • gles2 -> RHI OpenGL 后端
  • metal -> RHI Metal 后端
  • vulkan -> RHI Vulkan 后端
  • d3d11 -> RHI DirectX 11 后端

如果未指定,RHI 将默认使用其推断出的平台最佳后端。

参考

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