forked from qt-creator/qt-creator
QmlPuppet: Small optimization to rendering 2D content in 3D scene
There is no need to read back the texture into image when rendering 2D content for embedding into 3D scene, so don't do that. Change-Id: If84619bdc20e6997733effc4745a496fab69e5b8 Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
This commit is contained in:
@@ -800,8 +800,7 @@ void Qt5InformationNodeInstanceServer::doRender3DEditView()
|
||||
#else
|
||||
if (m_render2D) {
|
||||
// Render 2D content, as it might be used by 3D content
|
||||
grabWindow();
|
||||
m_render2D = false;
|
||||
m_render2D = !renderWindow();
|
||||
}
|
||||
renderImage = grabRenderControl(m_editView3DData);
|
||||
#endif
|
||||
|
@@ -308,6 +308,25 @@ QImage Qt5NodeInstanceServer::grabRenderControl(RenderViewData &viewData)
|
||||
return renderImage;
|
||||
}
|
||||
|
||||
// This method simply renders the window without grabbing it
|
||||
bool Qt5NodeInstanceServer::renderWindow()
|
||||
{
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||
if (!m_viewData.rootItem || (m_viewData.bufferDirty && !initRhi(m_viewData)))
|
||||
return false;
|
||||
|
||||
m_viewData.renderControl->polishItems();
|
||||
m_viewData.renderControl->beginFrame();
|
||||
m_viewData.renderControl->sync();
|
||||
m_viewData.renderControl->render();
|
||||
m_viewData.renderControl->endFrame();
|
||||
return true;
|
||||
#else
|
||||
Q_UNUSED(viewData)
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
QImage Qt5NodeInstanceServer::grabWindow()
|
||||
{
|
||||
if (m_viewData.rootItem)
|
||||
|
@@ -94,6 +94,7 @@ protected:
|
||||
|
||||
virtual bool initRhi(RenderViewData &viewData);
|
||||
virtual QImage grabRenderControl(RenderViewData &viewData);
|
||||
virtual bool renderWindow();
|
||||
|
||||
private:
|
||||
RenderViewData m_viewData;
|
||||
|
Reference in New Issue
Block a user