C

Q3DSSurfaceViewer 类

使用 OpenGL 在 QWindow 或离屏渲染目标上渲染 Qt 3D Studio 展示。更多...

头文件 #include <Q3DSSurfaceViewer>
Qt 3D Studio 2.0
继承 QObject

此类自 Qt 3D Studio 2.0 起引入。

属性

公共函数

Q3DSSurfaceViewer(QObject *parent = nullptr)
virtual~Q3DSSurfaceViewer()
boolautoSize() const
QOpenGLContext *context() const
boolcreate(QSurface *surface, QOpenGLContext *context)
boolcreate(QSurface *surface, QOpenGLContext *context, GLuint fboId)
voiddestroy()
QStringerror() const
intfboId() const
QImagegrab(const QRect &rect = QRect())
boolisRunning() const
Q3DSPresentation *presentation() const
QStringpresentationId() const
QQmlEngine *qmlEngine() const
voidsetAutoSize(bool autoSize)
voidsetQmlEngine(QQmlEngine *qmlEngine)
voidsetSize(const QSize &size)
voidsetUpdateInterval(int interval)
Q3DSViewerSettings *settings() const
QSizesize() const
QSurface *surface() const
intupdateInterval() const

公共槽

voidupdate()

信号

voidafterRendering()
voidautoSizeChanged(bool autoSize)
voiderrorChanged()
voidframeUpdate()
voidpresentationIdChanged(const QString &id)
voidpresentationLoaded()
voidpresentationReady()
voidrunningChanged(bool initialized)
voidsizeChanged(const QSize &size)
voidupdateIntervalChanged(bool autoUpdate)

详细描述

Q3DSSurfaceViewer 用于将 Qt 3D Studio 展示渲染到 QSurface。在实践中,这意味着两种类型的使用:渲染到屏幕上的 QWindow,或渲染到离屏渲染目标(通常是通过帧缓冲对象和 QOffscreenSurface 的 OpenGL 纹理)。

示例用法

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    QOpenGLContext context;
    context.create();

    QWindow window;
    window.setSurfaceType(QSurface::OpenGLSurface);
    window.setFormat(context.format());
    window.create();

    Q3DSSurfaceViewer viewer;
    viewer.presentation()->setSource(QUrl(QStringLiteral("qrc:/my_presentation.uip")));
    viewer.setUpdateInterval(0); // enable automatic updates

    // Register a scene object for slide management (optional)
    Q3DSSceneElement scene(viewer.presentation(), QStringLiteral("Scene"));

    // Register an element object for attribute setting (optional)
    Q3DSElement element(viewer.presentation(), QStringLiteral("Scene.Layer.myCarModel"));

    viewer.create(&window, &context);

    w.resize(1024, 768);
    w.show();

    return app.exec();
}

属性文档

autoSize : bool

指定当表面大小改变时,查看器是否应自动调整演示文稿的大小以匹配表面大小。如果此属性值是 true,每当查看器更新时,size 属性会自动更新。

当通过一个 QOffscreenSurface 进行离屏渲染时,应用程序必须将该属性设置为 false,因为此时需要应用程序提供一个具有所需大小的 QOpenGLFramebufferObject。此时必须将 Q3DSSurfaceViewer 的大小设置到相同值。

默认值为 true

访问函数

boolautoSize() const
voidsetAutoSize(bool autoSize)

通知信号

voidautoSizeChanged(bool autoSize)

error : const QString

错误字符串。

此属性为只读。

访问函数

QStringerror() const

通知信号

voiderrorChanged()

presentationId : const QString

访问函数

QStringpresentationId() const

通知信号

voidpresentationIdChanged(const QString &id)

running : const bool

当演示文稿加载完毕并准备好显示时,此属性值为 true

此属性为只读。

访问函数

boolisRunning() const

通知信号

voidrunningChanged(bool initialized)

size : QSize

包含演示文稿期望的大小。仅在 autoSize 设置为 false 时有关。

访问函数

QSizesize() const
voidsetSize(const QSize &size)

通知信号

voidsizeChanged(const QSize &size)

另请参阅autoSize.

updateInterval : int

包含查看器更新间隔(以毫秒为单位)。如果值为负数,则查看器不会自动更新演示文稿。

默认值为 -1,表示没有自动更新,必须手动调用 update()。

访问函数

intupdateInterval() const
voidsetUpdateInterval(int interval)

通知信号

voidupdateIntervalChanged(bool autoUpdate)

另请参阅update().

成员函数文档

Q3DSSurfaceViewer::Q3DSSurfaceViewer(QObject *parent = nullptr)

Q3DSSurfaceViewer::Q3DSSurfaceViewer 构造函数。 parent 对象的可选父对象。

[signal] void Q3DSSurfaceViewer::afterRendering()

每渲染一帧时发出。

[signal] void Q3DSSurfaceViewer::frameUpdate()

每次渲染帧时都会发出。

[信号] void Q3DSSurfaceViewer::presentationLoaded()

当演示已加载并准备好显示时发出。

[信号] void Q3DSSurfaceViewer::presentationReady()

当第一帧即将显示时发出。此信号后,DataInputs 和 setAttribute 可用。

[槽] void Q3DSSurfaceViewer::update()

使用新帧更新表面查看器。

[虚析构函数] Q3DSSurfaceViewer::~Q3DSSurfaceViewer()

Q3DSSurfaceViewer 析构函数

QOpenGLContext *Q3DSSurfaceViewer::context() const

返回初始化时给出的上下文。

另请参阅create().

bool Q3DSSurfaceViewer::create(QSurface *surface, QOpenGLContext *context)

使用指定的 surfacecontext 初始化 Q3DSSurfaceViewer 以绘制演示。

在初始化查看器之前必须设置附加演示的源属性。

返回初始化是否成功。

另请参阅runningQ3DSPresentation::sourcepresentation

bool Q3DSSurfaceViewer::create(QSurface *surface, QOpenGLContext *context, GLuint fboId)

使用指定的 surfacecontext,并可选的帧缓冲区 ID(《i)fboId)初始化 Q3DSSurfaceViewer 以绘制演示。如果省略 fboId,则默认为零。

在初始化查看器之前必须设置附加演示的源属性。

返回初始化是否成功。

另请参阅runningQ3DSPresentation::sourcepresentation

void Q3DSSurfaceViewer::destroy()

释放演示及其所有相关资源。可以再次调用 create() 以重新使用 Q3DSSurfaceViewer 实例。

QString Q3DSSurfaceViewer::error() const

返回错误字符串。

注意:属性错误的数据获取器。

int Q3DSSurfaceViewer::fboId() const

返回初始化时给出的帧缓冲区 id。

另请参阅create().

QImage Q3DSSurfaceViewer::grab(const QRect &rect = QRect())

使用给定的 rect 将帧缓冲区中渲染的数据抓取到一个图像中。参数 rect 是可选的。如果省略,则捕获整个帧缓冲区。

注意:这是一个可能昂贵的操作。

Q3DSPresentation *Q3DSSurfaceViewer::presentation() const

返回 Q3DSSurfaceViewer 使用的演示对象。

QQmlEngine *Q3DSSurfaceViewer::qmlEngine() const

使用 setQmlEngine 方法设置的 QML 引擎。

另请参阅 setQmlEngine

void Q3DSSurfaceViewer::setQmlEngine(QQmlEngine *qmlEngine)

将用于渲染演示 QML 流的 QML 引擎设置为 qmlEngine。在调用 Q3DSSurfaceViewer::create 之前必须设置 QML 引擎。如果未设置 QML 引擎,则在运行时初始化期间将创建一个新的引擎。

另请参阅 qmlEngine

Q3DSViewerSettings *Q3DSSurfaceViewer::settings() const

返回用于 Q3DSSurfaceViewer 的设置对象。

QSurface *Q3DSSurfaceViewer::surface() const

返回初始化时提供的表面。

另请参阅create().

在特定的 Qt 许可证下可用。
了解更多信息。