diff options
author | Peilin <peilin@multicorewareinc.com> | 2013-12-30 17:57:49 +0800 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2014-01-29 08:09:24 +0100 |
commit | 432283afd61e8bbded37aeac92f42d5045600c70 (patch) | |
tree | af4365d4f39a884ee1b08ddecc79ef63b8750c00 /chart2 | |
parent | 4b7d8ad5e785a5421800de29faa8fcb462d8f80d (diff) |
add anti-aliasing fbo
Diffstat (limited to 'chart2')
-rwxr-xr-x | chart2/source/view/main/OpenGLRender.cxx | 29 | ||||
-rwxr-xr-x | chart2/source/view/main/OpenGLRender.hxx | 8 |
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: */ |