summaryrefslogtreecommitdiff
path: root/chart2/source
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@collabora.co.uk>2014-05-28 18:51:38 +0200
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2014-05-28 19:17:53 +0200
commita45b16602f4d167d1cccfa285dd0c49a6c9d7c45 (patch)
tree247d419755abefbc6eada7addf446dad8e73becc /chart2/source
parent8287ee51e91899bf2eac35b0eee567998cc99a25 (diff)
avoid transferring the textures for each frame
Change-Id: I79466e66dc18dbbf72f192fe44d05fb6d657fa34
Diffstat (limited to 'chart2/source')
-rw-r--r--chart2/source/view/charttypes/GL3DBarChart.cxx20
-rw-r--r--chart2/source/view/inc/GL3DBarChart.hxx1
-rw-r--r--chart2/source/view/inc/GL3DRenderer.hxx5
-rw-r--r--chart2/source/view/main/GL3DRenderer.cxx2
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();