本页内容

Qt3DExtras::QForwardRenderer Class

class Qt3DExtras::QForwardRenderer

QForwardRenderer 提供了一个前向渲染器的默认FrameGraph实现。更多内容...

标题: #include <qforwardrenderer.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3dextras)
target_link_libraries(mytarget PRIVATE Qt6::3dextras)
qmake: QT += 3dextras
在 QML 中: ForwardRenderer
继承自: Qt3DRender::QTechniqueFilter
状态: 已弃用

该类已弃用。我们强烈建议在新代码中不要使用它。

属性

公共函数

Qt3DRender::QClearBuffers::BufferType buffersToClear() const
Qt3DCore::QEntity *camera() const
QColor clearColor() const
QSize externalRenderTargetSize() const
float gamma() const
bool isFrustumCullingEnabled() const
bool showDebugOverlay() const
QObject *surface() const
QRectF viewportRect() const

公共槽位

void setBuffersToClear(Qt3DRender::QClearBuffers::BufferType)
void setCamera(Qt3DCore::QEntity *camera)
void setClearColor(const QColor &clearColor)
void setExternalRenderTargetSize(const QSize &size)
void setFrustumCullingEnabled(bool enabled)
void setGamma(float gamma)
void setShowDebugOverlay(bool showDebugOverlay)
void setSurface(QObject *surface)
void setViewportRect(const QRectF &viewportRect)

信号

void buffersToClearChanged(Qt3DRender::QClearBuffers::BufferType)
void cameraChanged(Qt3DCore::QEntity *camera)
void clearColorChanged(const QColor &clearColor)
void externalRenderTargetSizeChanged(const QSize &size)
void frustumCullingEnabledChanged(bool enabled)
void gammaChanged(float gamma)
void showDebugOverlayChanged(bool showDebugOverlay)
void surfaceChanged(QObject *surface)
void viewportRectChanged(const QRectF &viewportRect)

详细说明

前向渲染是 OpenGL 传统上采用的方式。它一次渲染一个对象,并在渲染过程中逐个对对象进行着色,直接将结果渲染到后缓冲区中。

QForwardRenderer 是一个单叶FrameGraph树,其中包含一个Qt3DRender::QViewport 、一个Qt3DRender::QCameraSelector 以及一个Qt3DRender::QClearBuffers 。QForwardRenderer 有一个默认的要求过滤器键,其名称为“renderingStyle”,值为“forward”。如果您需要过滤掉某些渲染技术,应基于该过滤器键进行操作。

默认情况下,视口占据整个屏幕,清屏颜色为白色。锥体剔除功能也已启用。

属性文档

buffersToClear : Qt3DRender::QClearBuffers::BufferType

用于存储待清空的当前缓冲区。默认值为 ColorDepthBuffer

访问函数:

Qt3DRender::QClearBuffers::BufferType buffersToClear() const
void setBuffersToClear(Qt3DRender::QClearBuffers::BufferType)

通知信号:

void buffersToClearChanged(Qt3DRender::QClearBuffers::BufferType)

camera : Qt3DCore::QEntity*

保存用于渲染场景的当前相机实体。

注意:摄像机是一个 QEntity,其组件之一为 QCameraLens。

访问函数:

Qt3DCore::QEntity *camera() const
void setCamera(Qt3DCore::QEntity *camera)

通知器信号:

void cameraChanged(Qt3DCore::QEntity *camera)

clearColor : QColor

保存场景的当前清除颜色。在渲染之前,帧缓冲区会被初始化为该清除颜色。

访问函数:

QColor clearColor() const
void setClearColor(const QColor &clearColor)

通知信号:

void clearColorChanged(const QColor &clearColor)

externalRenderTargetSize : QSize

包含外部渲染目标的大小。当渲染不以窗口表面为目标时(如在surface 中设置的那样),外部渲染目标便会发挥作用。

访问函数:

QSize externalRenderTargetSize() const
void setExternalRenderTargetSize(const QSize &size)

通知信号:

void externalRenderTargetSizeChanged(const QSize &size)

frustumCulling : bool

指示渲染器是否对场景应用视锥体剔除。

访问函数:

bool isFrustumCullingEnabled() const
void setFrustumCullingEnabled(bool enabled)

通知器信号:

void frustumCullingEnabledChanged(bool enabled)

gamma : float

存储渲染器对场景应用的伽马值。

访问函数:

float gamma() const
void setGamma(float gamma)

通知信号:

void gammaChanged(float gamma)

showDebugOverlay : bool

如果为真,将在场景上渲染一个调试覆盖层。它将显示有关运行时渲染状态的详细信息,允许用户开启或关闭日志记录等。

访问函数:

bool showDebugOverlay() const
void setShowDebugOverlay(bool showDebugOverlay)

通知器信号:

void showDebugOverlayChanged(bool showDebugOverlay)

surface : QObject*

保存当前的渲染表面。

访问函数:

QObject *surface() const
void setSurface(QObject *surface)

通知器信号:

void surfaceChanged(QObject *surface)

viewportRect : QRectF

保存当前归一化的视口矩形。

访问函数:

QRectF viewportRect() const
void setViewportRect(const QRectF &viewportRect)

通知信号:

void viewportRectChanged(const QRectF &viewportRect)

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