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() |
| bool | autoSize() const |
| QOpenGLContext * | context() const |
| bool | create(QSurface *surface, QOpenGLContext *context) |
| bool | create(QSurface *surface, QOpenGLContext *context, GLuint fboId) |
| void | destroy() |
| QString | error() const |
| int | fboId() const |
| QImage | grab(const QRect &rect = QRect()) |
| bool | isRunning() const |
| Q3DSPresentation * | presentation() const |
| QString | presentationId() const |
| QQmlEngine * | qmlEngine() const |
| void | setAutoSize(bool autoSize) |
| void | setQmlEngine(QQmlEngine *qmlEngine) |
| void | setSize(const QSize &size) |
| void | setUpdateInterval(int interval) |
| Q3DSViewerSettings * | settings() const |
| QSize | size() const |
| QSurface * | surface() const |
| int | updateInterval() const |
公共槽
| void | update() |
信号
| void | afterRendering() |
| void | autoSizeChanged(bool autoSize) |
| void | errorChanged() |
| void | frameUpdate() |
| void | presentationIdChanged(const QString &id) |
| void | presentationLoaded() |
| void | presentationReady() |
| void | runningChanged(bool initialized) |
| void | sizeChanged(const QSize &size) |
| void | updateIntervalChanged(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。
访问函数
| bool | autoSize() const |
| void | setAutoSize(bool autoSize) |
通知信号
| void | autoSizeChanged(bool autoSize) |
error : const QString
错误字符串。
此属性为只读。
访问函数
| QString | error() const |
通知信号
| void | errorChanged() |
presentationId : const QString
访问函数
| QString | presentationId() const |
通知信号
| void | presentationIdChanged(const QString &id) |
running : const bool
当演示文稿加载完毕并准备好显示时,此属性值为 true。
此属性为只读。
访问函数
| bool | isRunning() const |
通知信号
| void | runningChanged(bool initialized) |
size : QSize
包含演示文稿期望的大小。仅在 autoSize 设置为 false 时有关。
访问函数
| QSize | size() const |
| void | setSize(const QSize &size) |
通知信号
| void | sizeChanged(const QSize &size) |
另请参阅autoSize.
updateInterval : int
包含查看器更新间隔(以毫秒为单位)。如果值为负数,则查看器不会自动更新演示文稿。
默认值为 -1,表示没有自动更新,必须手动调用 update()。
访问函数
| int | updateInterval() const |
| void | setUpdateInterval(int interval) |
通知信号
| void | updateIntervalChanged(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)
使用指定的 surface 和 context 初始化 Q3DSSurfaceViewer 以绘制演示。
在初始化查看器之前必须设置附加演示的源属性。
返回初始化是否成功。
另请参阅running、Q3DSPresentation::source 和 presentation。
bool Q3DSSurfaceViewer::create(QSurface *surface, QOpenGLContext *context, GLuint fboId)
使用指定的 surface 和 context,并可选的帧缓冲区 ID(《i)fboId)初始化 Q3DSSurfaceViewer 以绘制演示。如果省略 fboId,则默认为零。
在初始化查看器之前必须设置附加演示的源属性。
返回初始化是否成功。
另请参阅running、Q3DSPresentation::source 和 presentation。
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 许可证下可用。
了解更多信息。