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 许可证下可用。
了解更多信息。