diff options
author | Markus Mohrhard <markus.mohrhard@collabora.co.uk> | 2014-05-28 18:51:38 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2014-05-28 19:17:53 +0200 |
commit | a45b16602f4d167d1cccfa285dd0c49a6c9d7c45 (patch) | |
tree | 247d419755abefbc6eada7addf446dad8e73becc /chart2/source | |
parent | 8287ee51e91899bf2eac35b0eee567998cc99a25 (diff) |
avoid transferring the textures for each frame
Change-Id: I79466e66dc18dbbf72f192fe44d05fb6d657fa34
Diffstat (limited to 'chart2/source')
-rw-r--r-- | chart2/source/view/charttypes/GL3DBarChart.cxx | 20 | ||||
-rw-r--r-- | chart2/source/view/inc/GL3DBarChart.hxx | 1 | ||||
-rw-r--r-- | chart2/source/view/inc/GL3DRenderer.hxx | 5 | ||||
-rw-r--r-- | chart2/source/view/main/GL3DRenderer.cxx | 2 |
4 files changed, 20 insertions, 8 deletions
diff --git a/chart2/source/view/charttypes/GL3DBarChart.cxx b/chart2/source/view/charttypes/GL3DBarChart.cxx index 1bb558e0142f..bc1caee7a815 100644 --- a/chart2/source/view/charttypes/GL3DBarChart.cxx +++ b/chart2/source/view/charttypes/GL3DBarChart.cxx @@ -35,7 +35,8 @@ GL3DBarChart::GL3DBarChart( mnStep(0), mnStepsTotal(0), mnCornerId(0), - mbBlockUserInput(false) + mbBlockUserInput(false), + mbNeedsNewRender(true) { Size aSize = mrWindow.GetSizePixel(); mpRenderer->SetSize(aSize); @@ -93,6 +94,7 @@ double findMaxValue(const boost::ptr_vector<VDataSeries>& rDataSeriesContainer) void GL3DBarChart::create3DShapes(const boost::ptr_vector<VDataSeries>& rDataSeriesContainer, ExplicitCategoriesProvider& rCatProvider) { + mpRenderer->ReleaseShapes(); // Each series of data flows from left to right, and multiple series are // stacked vertically along y axis. @@ -269,6 +271,8 @@ void GL3DBarChart::create3DShapes(const boost::ptr_vector<VDataSeries>& rDataSer mpCamera->setPosition(maCameraPosition); maCameraDirection = glm::vec3(mnMaxX/2, mnMaxY/2, 0); mpCamera->setDirection(maCameraDirection); + + mbNeedsNewRender = true; } void GL3DBarChart::render() @@ -280,11 +284,19 @@ void GL3DBarChart::render() Size aSize = mrWindow.GetSizePixel(); mpRenderer->SetSize(aSize); mrWindow.getContext()->setWinSize(aSize); - for(boost::ptr_vector<opengl3D::Renderable3DObject>::iterator itr = maShapes.begin(), - itrEnd = maShapes.end(); itr != itrEnd; ++itr) + if(mbNeedsNewRender) + { + for(boost::ptr_vector<opengl3D::Renderable3DObject>::iterator itr = maShapes.begin(), + itrEnd = maShapes.end(); itr != itrEnd; ++itr) + { + itr->render(); + } + } + else { - itr->render(); + mpCamera->render(); } + mbNeedsNewRender = false; mpRenderer->ProcessUnrenderedShape(); mrWindow.getContext()->swapBuffers(); } diff --git a/chart2/source/view/inc/GL3DBarChart.hxx b/chart2/source/view/inc/GL3DBarChart.hxx index de92660a0303..8c97ca8d3ce8 100644 --- a/chart2/source/view/inc/GL3DBarChart.hxx +++ b/chart2/source/view/inc/GL3DBarChart.hxx @@ -105,6 +105,7 @@ private: std::map<sal_uInt32, const BarInformation> maBarMap; bool mbBlockUserInput; + bool mbNeedsNewRender; }; } diff --git a/chart2/source/view/inc/GL3DRenderer.hxx b/chart2/source/view/inc/GL3DRenderer.hxx index f16340dc4b38..4e85568315eb 100644 --- a/chart2/source/view/inc/GL3DRenderer.hxx +++ b/chart2/source/view/inc/GL3DRenderer.hxx @@ -184,6 +184,9 @@ public: void SetPickingMode(bool bPickingMode); sal_uInt32 GetPixelColorFromPoint(long nX, long nY); + + void ReleaseShapes(); + void ReleaseScreenTextShapes(); private: void MoveModelf(PosVecf3& trans,PosVecf3& angle,PosVecf3& scale); @@ -219,11 +222,9 @@ private: int iSubDivZ, float width, float height, float depth); void CreateSceneBoxView(); - void ReleaseShapes(); void ReleasePolygonShapes(); void ReleaseExtrude3DShapes(); void ReleaseTextShapes(); - void ReleaseScreenTextShapes(); void ReleaseBatchBarInfo(); void GetBatchBarsInfo(); void GetBatchTopAndFlatInfo(Extrude3DInfo &extrude3D); diff --git a/chart2/source/view/main/GL3DRenderer.cxx b/chart2/source/view/main/GL3DRenderer.cxx index a6605a83d427..ae987aea490c 100644 --- a/chart2/source/view/main/GL3DRenderer.cxx +++ b/chart2/source/view/main/GL3DRenderer.cxx @@ -1711,7 +1711,6 @@ void OpenGL3DRenderer::ProcessUnrenderedShape() RenderTextShape(); // render screen text RenderScreenTextShape(); - ReleaseShapes(); #if DEBUG_FBO OUString aFileName = OUString("D://shaderout_") + OUString::number(m_iWidth) + "_" + OUString::number(m_iHeight) + ".png"; OpenGLHelper::renderToFile(m_iWidth, m_iHeight, aFileName); @@ -1762,7 +1761,6 @@ void OpenGL3DRenderer::ReleaseBatchBarInfo() } } - void OpenGL3DRenderer::ReleaseShapes() { ReleasePolygonShapes(); |