QLevelOfDetail 类
类 Qt3DRender::QLevelOfDetailQLevelOfDetail 类提供了一种根据屏幕上的大小来控制渲染实体复杂度的方法。 更多信息...
头文件 | #include <QLevelOfDetail> |
CMake | find_package(Qt6 REQUIRED COMPONENTS 3drender) target_link_libraries(mytarget PRIVATE Qt6::3drender) |
qmake | QT += 3drender |
由以下类实例化 | LevelOfDetail |
继承自 | Qt3DCore::QComponent |
继承给 |
公共类型
枚举 | ThresholdType { DistanceToCameraThreshold, ProjectedScreenPixelSizeThreshold } |
属性
|
|
公共函数
QLevelOfDetail(Qt3DCore::QNode *parent = nullptr) | |
Qt3DRender::QCamera * | camera() const |
int | currentIndex() const |
Qt3DRender::QLevelOfDetail::ThresholdType | thresholdType() const |
QList<qreal> | thresholds() const |
Qt3DRender::QLevelOfDetailBoundingSphere | volumeOverride() const |
公共槽函数
void | setCamera(Qt3DRender::QCamera *camera) |
void | setCurrentIndex(int currentIndex) |
void | setThresholdType(Qt3DRender::QLevelOfDetail::ThresholdType thresholdType) |
void | setThresholds(const QList<qreal> &thresholds) |
void | setVolumeOverride(const Qt3DRender::QLevelOfDetailBoundingSphere &volumeOverride) |
信号
void | cameraChanged(Qt3DRender::QCamera *camera) |
void | currentIndexChanged(int currentIndex) |
void | thresholdTypeChanged(Qt3DRender::QLevelOfDetail::ThresholdType thresholdType) |
void | thresholdsChanged(const QList<qreal> &thresholds) |
void | volumeOverrideChanged(const Qt3DRender::QLevelOfDetailBoundingSphere &volumeOverride) |
详细信息
QLevelOfDetail可以根据观察者距离或屏幕上的大小来控制实体的表示。
为了提高渲染性能,可以使用更少的细节来渲染非常小的对象,在几何或纹理上。
组件通过指定用于解释为相机或屏幕大小的值阈值来控制。
当视点改变时,currentIndex属性将改变以反映范围数组中匹配的值。
然后可以使用currentIndex属性,例如,启用或禁用实体、更改材质等。
LevelOfDetail组件不能在多个entities之间共享。
#include <Qt3DCore/QEntity> #include <Qt3DRender/QGeometryRenderer> #include <Qt3DRender/QLevelOfDetail> // Scene Qt3DCore::QEntity *rootEntity = new Qt3DCore::Qt3DCore::QEntity; Qt3DCore::QEntity *renderableEntity = new Qt3DCore::QEntity(rootEntity); Qt3DRender::QGeometryRenderer *geometryRenderer = new Qt3DCore::QGeometryRenderer(renderableEntity); renderableEntity->addComponent(geometryRenderer); Qt3DRender::QLevelOfDetail* lod = new Qt3Render::QLevelOfDetail(renderableEntity); QList<qreal> thresholds = {20, 35, 50, 65}; lod->setThresholds(thresholds); lod->setCamera(mainCamera); renderableEntity->addComponent(lod); // connect to QLevelOfDetail::currentIndexChanged to toggle rendering ...
成员类型文档
枚举 QLevelOfDetail::ThresholdType
指定如何解释阈值中的值
常量 | 值 | 描述 |
---|---|---|
Qt3DRender::QLevelOfDetail::DistanceToCameraThreshold | 0 | 实体到所选相机的距离 |
Qt3DRender::QLevelOfDetail::ProjectedScreenPixelSizeThreshold | 1 | 实体在从所选相机看屏幕时的投影大小,以屏幕空间内边界框边的像素数表示 |
属性文档
camera : Qt3DRender::QCamera*
保存用于计算实际距离或屏幕大小的相机的id。
访问函数
Qt3DRender::QCamera * | camera() const |
void | setCamera(Qt3DRender::QCamera *camera) |
通知信号
void | cameraChanged(Qt3DRender::QCamera *camera) |
currentIndex : int
范围数组中与当前到相机或屏幕大小匹配的索引。
访问函数
int | currentIndex() const |
void | setCurrentIndex(int currentIndex) |
通知信号
void | currentIndexChanged(int currentIndex) |
thresholdType : ThresholdType
指定如何解释范围值。
访问函数
Qt3DRender::QLevelOfDetail::ThresholdType | thresholdType() const |
void | setThresholdType(Qt3DRender::QLevelOfDetail::ThresholdType thresholdType) |
通知信号
void | thresholdTypeChanged(Qt3DRender::QLevelOfDetail::ThresholdType thresholdType) |
另请参阅Qt3DRender::QLevelOfDetail::ThresholdType.
thresholds : QList<qreal>
范围值的数组,作为浮点数。应首先指定最详细表示的值。
如果Qt3DRender::QLevelOfDetail::thresholdType设置为Qt3DRender::QLevelOfDetail::DistanceToCameraThreshold,则应按顺序指定值,在相机空间坐标中
如果Qt3DRender::QLevelOfDetail::thresholdType设置为Qt3DRender::QLevelOfDetail::ProjectedScreenPixelSizeThreshold,则应按顺序指定值,在屏幕空间像素中。
访问函数
QList<qreal> | thresholds() const |
void | setThresholds(const QList<qreal> &thresholds) |
通知信号
void | thresholdsChanged(const QList<qreal> &thresholds) |
另请参阅Qt3DRender::QLevelOfDetail::ThresholdType.
volumeOverride : Qt3DRender::QLevelOfDetailBoundingSphere
默认值为半径为1、以实体的局部原点为中心的球体。此代理体积用于计算到摄像机的距离或屏幕投影的大小。
如果此值设置为nullptr,则使用实体的边界体积。必须注意此边界体积永远不会变为无效。
访问函数
Qt3DRender::QLevelOfDetailBoundingSphere | volumeOverride() const |
void | setVolumeOverride(const Qt3DRender::QLevelOfDetailBoundingSphere &volumeOverride) |
通知信号
void | volumeOverrideChanged(const Qt3DRender::QLevelOfDetailBoundingSphere &volumeOverride) |
成员函数文档
[显式]
QLevelOfDetail::QLevelOfDetail(Qt3DCore::QNode *parent = nullptr)
使用指定的parent构建一个新的QLevelOfDetail。
[槽]
void QLevelOfDetail::setCamera(Qt3DRender::QCamera *camera)
设置相对于camera计算距离和大小的相机。
注意:属性camera的设置器函数。
另请参见camera().
[槽]
void QLevelOfDetail::setCurrentIndex(int currentIndex)
设置currentIndex。
注意:通常不应由用户设置。
但是,如果组件被禁用,则更改当前索引是切换多个表示的一种简单方法。
注意:属性currentIndex的设置器函数。
另请参见currentIndex().
[槽]
void QLevelOfDetail::setThresholdType(Qt3DRender::QLevelOfDetail::ThresholdType thresholdType)
使用参数thresholdType设置解释阈值值的方式
注意:属性thresholdType的设置器函数。
另请参见thresholdType()和Qt3DRender::QLevelOfDetail::ThresholdType.
[槽]
void QLevelOfDetail::setThresholds(const QList<qreal> &thresholds)
设置thresholds中的范围值。
注意:属性thresholds的设置器函数。
© 2024 The Qt Company Ltd. 本文档中的文档贡献归各自所有者所有。所提供的文档遵循由自由软件基金会发布的GNU自由文档许可证版本1.3的条款。Qt和相应商标是芬兰及其它国家和地区The Qt Company Ltd.的商标。所有其他商标归各自所有者所有。