QGIS API Documentation 3.41.0-Master (cea29feecf2)
Loading...
Searching...
No Matches
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} // namespace Qt3DCore
30
31namespace Qt3DRender
32{
33 class QCameraSelector;
34 class QClearBuffers;
35 class QRenderAspect;
36 class QRenderTarget;
37 class QRenderTargetSelector;
38 class QRenderTargetOutput;
39 class QRenderSurfaceSelector;
40 class QTexture2D;
41 class QViewport;
42} // namespace Qt3DRender
43
44namespace Qt3DLogic
45{
46 class QLogicAspect;
47}
48
49
50#define SIP_NO_FILE
51
64{
65 Q_OBJECT
66 public:
68 ~QgsOffscreen3DEngine() override;
69
70 void setSize( QSize s ) override;
71
72 void setClearColor( const QColor &color ) override;
73 void setFrustumCullingEnabled( bool enabled ) override;
74 void setRootEntity( Qt3DCore::QEntity *root ) override;
75
76 Qt3DRender::QRenderSettings *renderSettings() override;
77 Qt3DRender::QCamera *camera() override;
78 QSize size() const override;
79 QSurface *surface() const override;
80
81 private:
82 QSize mSize = QSize( 640, 480 );
83 Qt3DRender::QCamera *mCamera = nullptr;
84 QOffscreenSurface *mOffscreenSurface = nullptr;
85
86 // basic Qt3D stuff
87 Qt3DCore::QAspectEngine *mAspectEngine = nullptr; // The aspect engine, which holds the scene and related aspects.
88 Qt3DRender::QRenderAspect *mRenderAspect = nullptr; // The render aspect, which deals with rendering the scene.
89 Qt3DLogic::QLogicAspect *mLogicAspect = nullptr; // The logic aspect, which runs jobs to do with synchronising frames.
90 Qt3DRender::QRenderSettings *mRenderSettings = nullptr; // The render settings, which control the general rendering behavior.
91 Qt3DCore::QNode *mSceneRoot = nullptr; // The scene root, which becomes a child of the engine's root entity.
92 Qt3DCore::QEntity *mRoot = nullptr;
93};
94
95#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)