summaryrefslogtreecommitdiff
path: root/chart2
diff options
context:
space:
mode:
authorPeilin <peilin@multicorewareinc.com>2013-12-30 17:57:49 +0800
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2014-01-29 08:09:24 +0100
commit432283afd61e8bbded37aeac92f42d5045600c70 (patch)
treeaf4365d4f39a884ee1b08ddecc79ef63b8750c00 /chart2
parent4b7d8ad5e785a5421800de29faa8fcb462d8f80d (diff)
add anti-aliasing fbo
Diffstat (limited to 'chart2')
-rwxr-xr-xchart2/source/view/main/OpenGLRender.cxx29
-rwxr-xr-xchart2/source/view/main/OpenGLRender.hxx8
2 files changed, 37 insertions, 0 deletions
diff --git a/chart2/source/view/main/OpenGLRender.cxx b/chart2/source/view/main/OpenGLRender.cxx
index d76b4fae464a..cbb5af86f39d 100755
--- a/chart2/source/view/main/OpenGLRender.cxx
+++ b/chart2/source/view/main/OpenGLRender.cxx
@@ -1197,5 +1197,34 @@ int OpenGLRender::WGLisExtensionSupported(const char *extension)
}
#endif
+void OpenGLRender::SetColor(sal_uInt32 color)
+{
+ sal_uInt8 r = (color & 0x00FF0000) >> 16;
+ sal_uInt8 g = (color & 0x0000FF00) >> 8;
+ sal_uInt8 b = (color & 0x000000FF);
+ m_2DColor = glm::vec4((float)r / 255.0f, (float)g / 255.0f, (float)b / 255.0f, m_fLineAlpha);
+}
+
+int OpenGLRender::CreateMultiSampleFrameBufObj()
+{
+ glGenFramebuffers(1, &m_frameBufferMS);
+ glBindFramebuffer(GL_FRAMEBUFFER, m_frameBufferMS);
+
+ glGenRenderbuffers(1, &m_renderBufferColorMS);
+ glBindRenderbuffer(GL_RENDERBUFFER, m_renderBufferColorMS);
+ glRenderbufferStorageMultisample(GL_RENDERBUFFER, 8, GL_RGB, m_iWidth, m_iHeight);
+ glBindRenderbuffer(GL_RENDERBUFFER, 0);
+ glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, m_renderBufferColorMS);
+
+ glGenRenderbuffers(1, &m_renderBufferDepthMS);
+ glBindRenderbuffer(GL_RENDERBUFFER, m_renderBufferDepthMS);
+ glRenderbufferStorageMultisample(GL_RENDERBUFFER, 8, GL_DEPTH_COMPONENT24, m_iWidth, m_iHeight);
+ glBindRenderbuffer(GL_RENDERBUFFER, 0);
+ glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, m_renderBufferDepthMS);
+ glBindFramebuffer(GL_FRAMEBUFFER, 0);
+
+ return 0;
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/source/view/main/OpenGLRender.hxx b/chart2/source/view/main/OpenGLRender.hxx
index 70b05e05778a..aed00f91ae0b 100755
--- a/chart2/source/view/main/OpenGLRender.hxx
+++ b/chart2/source/view/main/OpenGLRender.hxx
@@ -129,6 +129,7 @@ public:
#endif
int GetMSAASupport();
int GetMSAAFormat();
+ void SetColor(sal_uInt32 color);
private:
GLint LoadShaders(const char *vertexShader,const char *fragmentShader);
int CreateTextureObj(int width, int height);
@@ -140,6 +141,8 @@ private:
int InitTempWindow(HWND *hwnd, int width, int height, PIXELFORMATDESCRIPTOR inPfd);
#endif
int WGLisExtensionSupported(const char *extension);
+ int CreateMultiSampleFrameBufObj();
+
private:
// Projection matrix : default 45 degree Field of View, 4:3 ratio, display range : 0.1 unit <-> 100 units
glm::mat4 m_Projection;
@@ -223,6 +226,11 @@ private:
int m_iArbMultisampleFormat;
GLint m_iSampleBufs;
GLint m_iSamples;
+
+ glm::vec4 m_2DColor;
+ GLuint m_frameBufferMS;
+ GLuint m_renderBufferColorMS;
+ GLuint m_renderBufferDepthMS;
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */