QGIS API Documentation 3.27.0-Master (1c05421486)
qgsoffscreen3dengine.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsoffscreen3dengine.h
3 --------------------------------------
4 Date : July 2018
5 Copyright : (C) 2018 by Martin Dobias
6 Email : wonder dot sk at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSOFFSCREEN3DENGINE_H
17#define QGSOFFSCREEN3DENGINE_H
18
19#include "qgsabstract3dengine.h"
20
21#include <QSize>
22
23class QOffscreenSurface;
24
25namespace Qt3DCore
26{
27 class QAspectEngine;
28 class QNode;
29}
30
31namespace Qt3DRender
32{
33 class QCameraSelector;
34 class QClearBuffers;
35 class QRenderAspect;
36 class QRenderCapture;
37 class QRenderCaptureReply;
38 class QRenderTarget;
39 class QRenderTargetSelector;
40 class QRenderTargetOutput;
41 class QRenderSurfaceSelector;
42 class QTexture2D;
43 class QViewport;
44}
45
46namespace Qt3DLogic
47{
48 class QLogicAspect;
49}
50
52
53#define SIP_NO_FILE
54
67{
68 Q_OBJECT
69 public:
71 ~QgsOffscreen3DEngine() override;
72
73 void setSize( QSize s ) override;
74
75 void setClearColor( const QColor &color ) override;
76 void setFrustumCullingEnabled( bool enabled ) override;
77 void setRootEntity( Qt3DCore::QEntity *root ) override;
78
79 Qt3DRender::QRenderSettings *renderSettings() override;
80 Qt3DRender::QCamera *camera() override;
81 QSize size() const override;
82 QSurface *surface() const override;
83
84 private:
85
86 QSize mSize = QSize( 640, 480 );
87 Qt3DRender::QCamera *mCamera = nullptr;
88 QOffscreenSurface *mOffscreenSurface = nullptr;
89
90 // basic Qt3D stuff
91 Qt3DCore::QAspectEngine *mAspectEngine = nullptr; // The aspect engine, which holds the scene and related aspects.
92 Qt3DRender::QRenderAspect *mRenderAspect = nullptr; // The render aspect, which deals with rendering the scene.
93 Qt3DLogic::QLogicAspect *mLogicAspect = nullptr; // The logic aspect, which runs jobs to do with synchronising frames.
94 Qt3DRender::QRenderSettings *mRenderSettings = nullptr; // The render settings, which control the general rendering behavior.
95 Qt3DCore::QNode *mSceneRoot = nullptr; // The scene root, which becomes a child of the engine's root entity.
96 Qt3DCore::QEntity *mRoot = nullptr;
97};
98
99#endif // QGSOFFSCREEN3DENGINE_H
virtual QSurface * surface() const =0
Returns the surface of the engine.
virtual Qt3DRender::QCamera * camera()=0
Returns pointer to the engine's camera entity.
virtual void setClearColor(const QColor &color)=0
Sets background color of the scene.
virtual void setSize(QSize s)=0
Sets the size of the rendering area (in pixels)
virtual void setFrustumCullingEnabled(bool enabled)=0
Sets whether frustum culling is enabled (this should make rendering faster by not rendering entities ...
virtual void setRootEntity(Qt3DCore::QEntity *root)=0
Sets root entity of the 3D scene.
virtual QSize size() const =0
Returns size of the engine's rendering area in pixels.
virtual Qt3DRender::QRenderSettings * renderSettings()=0
Returns access to the engine's render settings (the frame graph can be accessed from here)