Skip to content

Commit

Permalink
add enabling/disabling screen capturing
Browse files Browse the repository at this point in the history
  • Loading branch information
NEDJIMAbelgacem authored and wonder-sk committed Mar 1, 2021
1 parent 65779a9 commit 9b53791
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 1 deletion.
10 changes: 10 additions & 0 deletions src/3d/qgsabstract3dengine.cpp
Expand Up @@ -35,3 +35,13 @@ void QgsAbstract3DEngine::requestCaptureImage()
captureReply->deleteLater();
} );
}

void QgsAbstract3DEngine::setRenderCaptureEnabled( bool enabled )
{
mFrameGraph->setRenderCaptureEnabled( enabled );
}

bool QgsAbstract3DEngine::renderCaptureEnabled() const
{
return mFrameGraph->renderCaptureEnabled();
}
14 changes: 14 additions & 0 deletions src/3d/qgsabstract3dengine.h
Expand Up @@ -103,6 +103,20 @@ class _3D_EXPORT QgsAbstract3DEngine : public QObject
*/
QgsShadowRenderingFrameGraph *frameGraph() { return mFrameGraph; }

/**
* Sets whether it will be possible to render to an image
*
* \note for QgsWindow3DEngine render capture will be disabled by default
* and for QgsOffscreen3DEngine it is enabled by default
* \since QGIS 3.18
*/
void setRenderCaptureEnabled( bool enabled );

/**
* Returns whether it will be possible to render to an image
* \since QGIS 3.18
*/
bool renderCaptureEnabled() const;
signals:
//! Emitted after a call to requestCaptureImage() to return the captured image.
void imageCaptured( const QImage &image );
Expand Down
1 change: 1 addition & 0 deletions src/3d/qgsoffscreen3dengine.cpp
Expand Up @@ -92,6 +92,7 @@ QgsOffscreen3DEngine::QgsOffscreen3DEngine()
mOffscreenSurface->create();

mFrameGraph = new QgsShadowRenderingFrameGraph( mOffscreenSurface, mSize, mCamera, mRoot );
mFrameGraph->setRenderCaptureEnabled( true );
mFrameGraph->setShadowRenderingEnabled( false );
// Set this frame graph to be in use.
// the render settings also sets itself as the parent of mSurfaceSelector
Expand Down
11 changes: 11 additions & 0 deletions src/3d/qgsshadowrenderingframegraph.cpp
Expand Up @@ -450,3 +450,14 @@ void QgsShadowRenderingFrameGraph::setSize( QSize s )
mRenderCaptureDepthTexture->setSize( mSize.width(), mSize.height() );
mRenderSurfaceSelector->setExternalRenderTargetSize( mSize );
}

void QgsShadowRenderingFrameGraph::setRenderCaptureEnabled( bool enabled )
{
if ( enabled == mRenderCaptureEnabled )
return;
mRenderCaptureEnabled = enabled;
if ( mRenderCaptureEnabled )
mRenderCaptureTargetSelector->setParent( mPostprocessPassLayerFilter );
else
mRenderCaptureTargetSelector->setParent( ( Qt3DCore::QNode * ) nullptr );
}
14 changes: 14 additions & 0 deletions src/3d/qgsshadowrenderingframegraph.h
Expand Up @@ -124,6 +124,18 @@ class QgsShadowRenderingFrameGraph : public Qt3DCore::QEntity
void setupDepthMapDebugging( bool enabled, Qt::Corner corner, double size );
//! Sets the size of the buffers used for rendering
void setSize( QSize s );

/**
* Sets whether it will be possible to render to an image
* \since QGIS 3.18
*/
void setRenderCaptureEnabled( bool enabled );

/**
* Returns whether it will be possible to render to an image
* \since QGIS 3.18
*/
bool renderCaptureEnabled() const { return mRenderCaptureEnabled; }
private:
Qt3DRender::QRenderSurfaceSelector *mRenderSurfaceSelector = nullptr;
Qt3DRender::QViewport *mMainViewPort = nullptr;
Expand Down Expand Up @@ -200,6 +212,8 @@ class QgsShadowRenderingFrameGraph : public Qt3DCore::QEntity
Qt3DRender::QFrameGraphNode *constructTexturesPreviewPass();
Qt3DRender::QFrameGraphNode *constructPostprocessingPass();

bool mRenderCaptureEnabled = true;

Q_DISABLE_COPY( QgsShadowRenderingFrameGraph )
};

Expand Down
2 changes: 1 addition & 1 deletion src/3d/qgswindow3dengine.cpp
Expand Up @@ -31,7 +31,7 @@ QgsWindow3DEngine::QgsWindow3DEngine( QObject *parent )
mWindow3D->setRootEntity( mRoot );

mFrameGraph = new QgsShadowRenderingFrameGraph( mWindow3D, QSize( 1024, 768 ), mWindow3D->camera(), mRoot );

mFrameGraph->setRenderCaptureEnabled( false );
mWindow3D->setActiveFrameGraph( mFrameGraph->frameGraphRoot() );

// force switching to no shadow rendering
Expand Down

0 comments on commit 9b53791

Please sign in to comment.