fix the OpenGL offscreen rendering a bit
Change-Id: I1f11cdff0de48e3281a58aec9ea37a78c637195e
This commit is contained in:
committed by
Markus Mohrhard
parent
08a02bce23
commit
81074d6080
@@ -21,7 +21,8 @@ namespace chart {
|
|||||||
|
|
||||||
GL3DBarChart::GL3DBarChart(const std::vector<VDataSeries*>& rDataSeries):
|
GL3DBarChart::GL3DBarChart(const std::vector<VDataSeries*>& rDataSeries):
|
||||||
maDataSeries(rDataSeries),
|
maDataSeries(rDataSeries),
|
||||||
mxContext(new opengl3D::temporary::TemporaryContext())
|
mpRenderer(new opengl3D::OpenGL3DRenderer()),
|
||||||
|
mxContext(new opengl3D::temporary::TemporaryContext(mpRenderer.get()))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -35,10 +36,9 @@ void GL3DBarChart::create3DShapes()
|
|||||||
const float nBarSizeY = 10;
|
const float nBarSizeY = 10;
|
||||||
const float nBarDistanceX = nBarSizeX / 2;
|
const float nBarDistanceX = nBarSizeX / 2;
|
||||||
const float nBarDistanceY = nBarSizeY / 2;
|
const float nBarDistanceY = nBarSizeY / 2;
|
||||||
opengl3D::OpenGL3DRenderer* pRenderer = NULL;
|
|
||||||
|
|
||||||
maShapes.clear();
|
maShapes.clear();
|
||||||
maShapes.push_back(new opengl3D::Camera(pRenderer));
|
maShapes.push_back(new opengl3D::Camera(mpRenderer.get()));
|
||||||
sal_Int32 nSeriesIndex = 0;
|
sal_Int32 nSeriesIndex = 0;
|
||||||
sal_uInt32 nId = 1;
|
sal_uInt32 nId = 1;
|
||||||
for(std::vector<VDataSeries*>::const_iterator itr = maDataSeries.begin(),
|
for(std::vector<VDataSeries*>::const_iterator itr = maDataSeries.begin(),
|
||||||
@@ -56,7 +56,7 @@ void GL3DBarChart::create3DShapes()
|
|||||||
glm::scale(aBarPosition, nBarSizeX, nBarSizeY, nVal);
|
glm::scale(aBarPosition, nBarSizeX, nBarSizeY, nVal);
|
||||||
glm::translate(aBarPosition, nXPos, nYPos, nVal/2);
|
glm::translate(aBarPosition, nXPos, nYPos, nVal/2);
|
||||||
|
|
||||||
maShapes.push_back(new opengl3D::Bar(pRenderer, aBarPosition, nId++));
|
maShapes.push_back(new opengl3D::Bar(mpRenderer.get(), aBarPosition, nId++));
|
||||||
}
|
}
|
||||||
|
|
||||||
++nSeriesIndex;
|
++nSeriesIndex;
|
||||||
|
@@ -99,7 +99,7 @@ namespace temporary {
|
|||||||
class TemporaryContext: public opengl3D::Renderable3DObject
|
class TemporaryContext: public opengl3D::Renderable3DObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TemporaryContext();
|
TemporaryContext(OpenGL3DRenderer* pRenderer);
|
||||||
|
|
||||||
void init();
|
void init();
|
||||||
virtual void render() SAL_OVERRIDE;
|
virtual void render() SAL_OVERRIDE;
|
||||||
|
@@ -21,6 +21,7 @@ namespace chart {
|
|||||||
namespace opengl3D {
|
namespace opengl3D {
|
||||||
|
|
||||||
class Renderable3DObject;
|
class Renderable3DObject;
|
||||||
|
class OpenGL3DRenderer;
|
||||||
|
|
||||||
namespace temporary {
|
namespace temporary {
|
||||||
|
|
||||||
@@ -43,6 +44,7 @@ private:
|
|||||||
std::vector<VDataSeries*> maDataSeries;
|
std::vector<VDataSeries*> maDataSeries;
|
||||||
boost::ptr_vector<opengl3D::Renderable3DObject> maShapes;
|
boost::ptr_vector<opengl3D::Renderable3DObject> maShapes;
|
||||||
|
|
||||||
|
boost::scoped_ptr<opengl3D::OpenGL3DRenderer> mpRenderer;
|
||||||
boost::scoped_ptr<opengl3D::temporary::TemporaryContext> mxContext;
|
boost::scoped_ptr<opengl3D::temporary::TemporaryContext> mxContext;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -75,8 +75,8 @@ void Camera::render()
|
|||||||
|
|
||||||
namespace temporary {
|
namespace temporary {
|
||||||
|
|
||||||
TemporaryContext::TemporaryContext():
|
TemporaryContext::TemporaryContext(OpenGL3DRenderer* pRenderer):
|
||||||
Renderable3DObject(NULL, -1)
|
Renderable3DObject(pRenderer, -1)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,6 +87,10 @@ void TemporaryContext::render()
|
|||||||
|
|
||||||
void TemporaryContext::init()
|
void TemporaryContext::init()
|
||||||
{
|
{
|
||||||
|
maContext.init();
|
||||||
|
Size winSize(800, 600);
|
||||||
|
maContext.setWinSize(winSize);
|
||||||
|
mpRenderer->SetSize(winSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -563,7 +563,7 @@ void OpenGLContext::renderToFile()
|
|||||||
|
|
||||||
BitmapEx aBmp = OpenGLHelper::ConvertBGRABufferToBitmapEx(buf.get(), iWidth, iHeight);
|
BitmapEx aBmp = OpenGLHelper::ConvertBGRABufferToBitmapEx(buf.get(), iWidth, iHeight);
|
||||||
static int nIdx = 0;
|
static int nIdx = 0;
|
||||||
OUString aName = OUString( "file:///home/moggi/Documents/work/text" ) + OUString::number( nIdx++ ) + ".png";
|
OUString aName = OUString( "file:///home/moggi/Documents/work/output" ) + OUString::number( nIdx++ ) + ".png";
|
||||||
try {
|
try {
|
||||||
vcl::PNGWriter aWriter( aBmp );
|
vcl::PNGWriter aWriter( aBmp );
|
||||||
SvFileStream sOutput( aName, STREAM_WRITE );
|
SvFileStream sOutput( aName, STREAM_WRITE );
|
||||||
|
Reference in New Issue
Block a user