summaryrefslogtreecommitdiffstats
path: root/src/render/backend/renderer_p.h
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2015-11-23 12:33:09 +0100
committerAndy Nichols <andy.nichols@theqtcompany.com>2015-11-24 16:53:24 +0000
commite088dde9105c42542d966903dc0e8891d6a870f6 (patch)
tree2abbe88e146e9538b0a8a025c6669b850d576e37 /src/render/backend/renderer_p.h
parent28fccfbe715251f307d407b03b64cb4936fee9e7 (diff)
QRenderAspect/Renderer: refactored to use the AbstractRenderer interface
Change-Id: I662577e6dd337b1f056f73b4a11262e902d4dde2 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
Diffstat (limited to 'src/render/backend/renderer_p.h')
-rw-r--r--src/render/backend/renderer_p.h69
1 files changed, 38 insertions, 31 deletions
diff --git a/src/render/backend/renderer_p.h b/src/render/backend/renderer_p.h
index 1e17d5270..05f7faaf2 100644
--- a/src/render/backend/renderer_p.h
+++ b/src/render/backend/renderer_p.h
@@ -53,8 +53,10 @@
#include <Qt3DRender/qtechnique.h>
#include <Qt3DRender/private/quniformvalue_p.h>
#include <Qt3DRender/private/handle_types_p.h>
+#include <Qt3DRender/private/abstractrenderer_p.h>
#include <Qt3DCore/qaspectjob.h>
#include <Qt3DRender/private/qt3drender_global_p.h>
+#include <Qt3DRender/private/pickboundingvolumejob_p.h>
#include <QHash>
#include <QMatrix4x4>
@@ -113,41 +115,58 @@ class VSyncFrameAdvanceService;
class PickEventFilter;
class NodeManagers;
-class QT3DRENDERSHARED_PRIVATE_EXPORT Renderer
+class QT3DRENDERSHARED_PRIVATE_EXPORT Renderer : public AbstractRenderer
{
public:
explicit Renderer(QRenderAspect::RenderType type);
~Renderer();
- void setQRenderAspect(QRenderAspect *aspect) { m_rendererAspect = aspect; }
- QRenderAspect *rendererAspect() const { return m_rendererAspect; }
+ API api() const Q_DECL_OVERRIDE { return AbstractRenderer::OpenGL; }
- NodeManagers *nodeManagers() const;
+ void setSurface(QSurface *s) Q_DECL_OVERRIDE;
+ void setNodeManagers(NodeManagers *managers) Q_DECL_OVERRIDE { m_nodesManager = managers; }
+ void setQRenderAspect(QRenderAspect *aspect) Q_DECL_OVERRIDE { m_rendererAspect = aspect; }
+ void setSurfaceExposed(bool exposed) Q_DECL_OVERRIDE;
- void createAllocators(Qt3DCore::QAbstractAspectJobManager *jobManager);
- void destroyAllocators(Qt3DCore::QAbstractAspectJobManager *jobManager);
+ QSurface *surface() const Q_DECL_OVERRIDE { return m_surface; }
+ NodeManagers *nodeManagers() const Q_DECL_OVERRIDE;
+ QRenderAspect *renderAspect() const Q_DECL_OVERRIDE { return m_rendererAspect; }
- Qt3DCore::QFrameAllocator *currentFrameAllocator();
+ void initialize() Q_DECL_OVERRIDE;
+ void shutdown() Q_DECL_OVERRIDE;
+ void createAllocators(Qt3DCore::QAbstractAspectJobManager *jobManager) Q_DECL_OVERRIDE;
- QThreadStorage<Qt3DCore::QFrameAllocator *> *tlsAllocators();
+ void render() Q_DECL_OVERRIDE;
+ void doRender() Q_DECL_OVERRIDE;
+
+ bool isRunning() const Q_DECL_OVERRIDE { return m_running.load(); }
- void setFrameGraphRoot(const Qt3DCore::QNodeId &fgRoot);
- Render::FrameGraphNode *frameGraphRoot() const;
+ void setSceneRoot(Entity *sgRoot) Q_DECL_OVERRIDE;
+ Entity *sceneRoot() const Q_DECL_OVERRIDE { return m_renderSceneRoot; }
- void setSceneGraphRoot(Entity *sgRoot);
- Entity *renderSceneRoot() const { return m_renderSceneRoot; }
+ void setFrameGraphRoot(const Qt3DCore::QNodeId fgRootId) Q_DECL_OVERRIDE;
+ FrameGraphNode *frameGraphRoot() const Q_DECL_OVERRIDE;
- void render();
- void doRender();
+ QVector<Qt3DCore::QAspectJobPtr> renderBinJobs() Q_DECL_OVERRIDE;
+ Qt3DCore::QAspectJobPtr pickBoundingVolumeJob() Q_DECL_OVERRIDE;
- QVector<Qt3DCore::QAspectJobPtr> createRenderBinJobs();
- QVector<Qt3DCore::QAspectJobPtr> createRenderBufferJobs();
- QVector<Qt3DCore::QAspectJobPtr> createGeometryRendererJobs();
Qt3DCore::QAspectJobPtr createRenderViewJob(FrameGraphNode *node, int submitOrderIndex);
+
+ Qt3DCore::QAbstractFrameAdvanceService *frameAdvanceService() const Q_DECL_OVERRIDE;
+
+ void registerEventFilter(Qt3DCore::QEventFilterService *service) Q_DECL_OVERRIDE;
+
void executeCommands(const QVector<RenderCommand *> &commands);
Attribute *updateBuffersAndAttributes(Geometry *geometry, RenderCommand *command, GLsizei &count, bool forceUpdate);
+
+ void setOpenGLContext(QOpenGLContext *context);
+ QGraphicsApiFilter *contextInfo() const;
+
+ void destroyAllocators(Qt3DCore::QAbstractAspectJobManager *jobManager);
void addAllocator(Qt3DCore::QFrameAllocator *allocator);
+ Qt3DCore::QFrameAllocator *currentFrameAllocator();
+ QThreadStorage<Qt3DCore::QFrameAllocator *> *tlsAllocators();
inline HMaterial defaultMaterialHandle() const { return m_defaultMaterialHandle; }
inline HEffect defaultEffectHandle() const { return m_defaultEffectHandle; }
@@ -155,27 +174,15 @@ public:
inline HRenderPass defaultRenderPassHandle() const { return m_defaultRenderPassHandle; }
inline RenderStateSet *defaultRenderState() const { return m_defaultRenderStateSet; }
- inline QList<QAbstractSceneParser *> sceneParsers() const { return m_sceneParsers; }
- inline VSyncFrameAdvanceService *vsyncFrameAdvanceService() const { return m_vsyncFrameAdvanceService.data(); }
QList<QMouseEvent> pendingPickingEvents() const;
- QGraphicsApiFilter *contextInfo() const;
-
- void setSurface(QSurface *s);
- inline QSurface *surface() const { return m_surface; }
- void registerEventFilter(Qt3DCore::QEventFilterService *service);
void enqueueRenderView(RenderView *renderView, int submitOrder);
bool submitRenderViews();
- void initialize(QOpenGLContext *context = Q_NULLPTR);
- void shutdown();
-
QMutex* mutex() { return &m_mutex; }
- bool isRunning() const { return m_running.load(); }
- void setSurfaceExposed(bool exposed);
#ifdef QT3D_RENDER_UNIT_TESTS
public:
@@ -222,7 +229,6 @@ private:
void buildDefaultMaterial();
void buildDefaultTechnique();
- void loadSceneParsers();
QMutex m_mutex;
QSemaphore m_submitRenderViewsSemaphore;
@@ -237,12 +243,13 @@ private:
QScopedPointer<QOpenGLDebugLogger> m_debugLogger;
QScopedPointer<PickEventFilter> m_pickEventFilter;
- QList<QAbstractSceneParser *> m_sceneParsers;
QVector<Qt3DCore::QFrameAllocator *> m_allocators;
QVector<Attribute *> m_dirtyAttributes;
QVector<Geometry *> m_dirtyGeometry;
QAtomicInt m_exposed;
+ QOpenGLContext *m_glContext;
+ PickBoundingVolumeJobPtr m_pickBoundingVolumeJob;
};
} // namespace Render