Kaydet (Commit) a45b1660 authored tarafından Markus Mohrhard's avatar Markus Mohrhard Kaydeden (comit) Markus Mohrhard

avoid transferring the textures for each frame

Change-Id: I79466e66dc18dbbf72f192fe44d05fb6d657fa34
üst 8287ee51
...@@ -35,7 +35,8 @@ GL3DBarChart::GL3DBarChart( ...@@ -35,7 +35,8 @@ GL3DBarChart::GL3DBarChart(
mnStep(0), mnStep(0),
mnStepsTotal(0), mnStepsTotal(0),
mnCornerId(0), mnCornerId(0),
mbBlockUserInput(false) mbBlockUserInput(false),
mbNeedsNewRender(true)
{ {
Size aSize = mrWindow.GetSizePixel(); Size aSize = mrWindow.GetSizePixel();
mpRenderer->SetSize(aSize); mpRenderer->SetSize(aSize);
...@@ -93,6 +94,7 @@ double findMaxValue(const boost::ptr_vector<VDataSeries>& rDataSeriesContainer) ...@@ -93,6 +94,7 @@ double findMaxValue(const boost::ptr_vector<VDataSeries>& rDataSeriesContainer)
void GL3DBarChart::create3DShapes(const boost::ptr_vector<VDataSeries>& rDataSeriesContainer, void GL3DBarChart::create3DShapes(const boost::ptr_vector<VDataSeries>& rDataSeriesContainer,
ExplicitCategoriesProvider& rCatProvider) ExplicitCategoriesProvider& rCatProvider)
{ {
mpRenderer->ReleaseShapes();
// Each series of data flows from left to right, and multiple series are // Each series of data flows from left to right, and multiple series are
// stacked vertically along y axis. // stacked vertically along y axis.
...@@ -269,6 +271,8 @@ void GL3DBarChart::create3DShapes(const boost::ptr_vector<VDataSeries>& rDataSer ...@@ -269,6 +271,8 @@ void GL3DBarChart::create3DShapes(const boost::ptr_vector<VDataSeries>& rDataSer
mpCamera->setPosition(maCameraPosition); mpCamera->setPosition(maCameraPosition);
maCameraDirection = glm::vec3(mnMaxX/2, mnMaxY/2, 0); maCameraDirection = glm::vec3(mnMaxX/2, mnMaxY/2, 0);
mpCamera->setDirection(maCameraDirection); mpCamera->setDirection(maCameraDirection);
mbNeedsNewRender = true;
} }
void GL3DBarChart::render() void GL3DBarChart::render()
...@@ -280,11 +284,19 @@ void GL3DBarChart::render() ...@@ -280,11 +284,19 @@ void GL3DBarChart::render()
Size aSize = mrWindow.GetSizePixel(); Size aSize = mrWindow.GetSizePixel();
mpRenderer->SetSize(aSize); mpRenderer->SetSize(aSize);
mrWindow.getContext()->setWinSize(aSize); mrWindow.getContext()->setWinSize(aSize);
for(boost::ptr_vector<opengl3D::Renderable3DObject>::iterator itr = maShapes.begin(), if(mbNeedsNewRender)
itrEnd = maShapes.end(); itr != itrEnd; ++itr) {
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(); mpRenderer->ProcessUnrenderedShape();
mrWindow.getContext()->swapBuffers(); mrWindow.getContext()->swapBuffers();
} }
......
...@@ -105,6 +105,7 @@ private: ...@@ -105,6 +105,7 @@ private:
std::map<sal_uInt32, const BarInformation> maBarMap; std::map<sal_uInt32, const BarInformation> maBarMap;
bool mbBlockUserInput; bool mbBlockUserInput;
bool mbNeedsNewRender;
}; };
} }
......
...@@ -184,6 +184,9 @@ public: ...@@ -184,6 +184,9 @@ public:
void SetPickingMode(bool bPickingMode); void SetPickingMode(bool bPickingMode);
sal_uInt32 GetPixelColorFromPoint(long nX, long nY); sal_uInt32 GetPixelColorFromPoint(long nX, long nY);
void ReleaseShapes();
void ReleaseScreenTextShapes();
private: private:
void MoveModelf(PosVecf3& trans,PosVecf3& angle,PosVecf3& scale); void MoveModelf(PosVecf3& trans,PosVecf3& angle,PosVecf3& scale);
...@@ -219,11 +222,9 @@ private: ...@@ -219,11 +222,9 @@ private:
int iSubDivZ, float width, float height, float depth); int iSubDivZ, float width, float height, float depth);
void CreateSceneBoxView(); void CreateSceneBoxView();
void ReleaseShapes();
void ReleasePolygonShapes(); void ReleasePolygonShapes();
void ReleaseExtrude3DShapes(); void ReleaseExtrude3DShapes();
void ReleaseTextShapes(); void ReleaseTextShapes();
void ReleaseScreenTextShapes();
void ReleaseBatchBarInfo(); void ReleaseBatchBarInfo();
void GetBatchBarsInfo(); void GetBatchBarsInfo();
void GetBatchTopAndFlatInfo(Extrude3DInfo &extrude3D); void GetBatchTopAndFlatInfo(Extrude3DInfo &extrude3D);
......
...@@ -1711,7 +1711,6 @@ void OpenGL3DRenderer::ProcessUnrenderedShape() ...@@ -1711,7 +1711,6 @@ void OpenGL3DRenderer::ProcessUnrenderedShape()
RenderTextShape(); RenderTextShape();
// render screen text // render screen text
RenderScreenTextShape(); RenderScreenTextShape();
ReleaseShapes();
#if DEBUG_FBO #if DEBUG_FBO
OUString aFileName = OUString("D://shaderout_") + OUString::number(m_iWidth) + "_" + OUString::number(m_iHeight) + ".png"; OUString aFileName = OUString("D://shaderout_") + OUString::number(m_iWidth) + "_" + OUString::number(m_iHeight) + ".png";
OpenGLHelper::renderToFile(m_iWidth, m_iHeight, aFileName); OpenGLHelper::renderToFile(m_iWidth, m_iHeight, aFileName);
...@@ -1762,7 +1761,6 @@ void OpenGL3DRenderer::ReleaseBatchBarInfo() ...@@ -1762,7 +1761,6 @@ void OpenGL3DRenderer::ReleaseBatchBarInfo()
} }
} }
void OpenGL3DRenderer::ReleaseShapes() void OpenGL3DRenderer::ReleaseShapes()
{ {
ReleasePolygonShapes(); ReleasePolygonShapes();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment