diff options
author | Markus Mohrhard <markus.mohrhard@collabora.co.uk> | 2014-05-21 14:23:07 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2014-05-21 14:24:09 +0200 |
commit | 2bbcf97eb35b98da33f3aaba67cd7abc1a265c69 (patch) | |
tree | 2a58d363ed4db9a3eda10cb6dca75d479c3dcead /vcl | |
parent | b8e8c9c471ba6974886dd624630144ef2edccb2c (diff) |
fix my issues with the offscreen rendering
Change-Id: I4a2ed8a20890119220d63a6768f13365a7b5f97d
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/opengl/OpenGLHelper.cxx | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/vcl/source/opengl/OpenGLHelper.cxx b/vcl/source/opengl/OpenGLHelper.cxx index ad2506d9166e..50d5799d7797 100644 --- a/vcl/source/opengl/OpenGLHelper.cxx +++ b/vcl/source/opengl/OpenGLHelper.cxx @@ -269,36 +269,31 @@ std::ostream& operator<<(std::ostream& rStrm, const glm::mat4& rMatrix) } void OpenGLHelper::createFramebuffer(long nWidth, long nHeight, - GLuint& nFramebufferId, GLuint& nRenderbufferId, GLuint& nTexturebufferId) + GLuint& nFramebufferId, GLuint& nRenderbufferDepthId, GLuint& nRenderbufferColorId) { - // create a renderbuffer - glGenRenderbuffers(1, &nRenderbufferId); - glBindRenderbuffer(GL_RENDERBUFFER, nRenderbufferId); + // create a renderbuffer for depth attachment + glGenRenderbuffers(1, &nRenderbufferDepthId); + glBindRenderbuffer(GL_RENDERBUFFER, nRenderbufferDepthId); glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, nWidth, nHeight); glBindRenderbuffer(GL_RENDERBUFFER, 0); - // create a texture - glGenTextures(1, &nTexturebufferId); - glBindTexture(GL_TEXTURE_2D, nTexturebufferId); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, nWidth, nHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); - glBindTexture(GL_TEXTURE_2D, 0); + // create a renderbuffer for color attachment + glGenRenderbuffers(1, &nRenderbufferColorId); + glBindRenderbuffer(GL_RENDERBUFFER, nRenderbufferColorId); + glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA8, nWidth, nHeight); + glBindRenderbuffer(GL_RENDERBUFFER, 0); // create a framebuffer object and attach renderbuffer and texture glGenFramebuffers(1, &nFramebufferId); glCheckFramebufferStatus(GL_FRAMEBUFFER); glBindFramebuffer(GL_FRAMEBUFFER, nFramebufferId); - glBindTexture(GL_TEXTURE_2D, nTexturebufferId); - // attach a texture to FBO color attachement point - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, nTexturebufferId, 0); + // attach a renderbuffer to FBO color attachement point + glBindRenderbuffer(GL_RENDERBUFFER, nRenderbufferColorId); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, nRenderbufferColorId); glCheckFramebufferStatus(GL_FRAMEBUFFER); - glBindTexture(GL_TEXTURE_2D, 0); // attach a renderbuffer to depth attachment point - glBindRenderbuffer(GL_RENDERBUFFER, nRenderbufferId); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, nRenderbufferId); + glBindRenderbuffer(GL_RENDERBUFFER, nRenderbufferDepthId); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, nRenderbufferDepthId); glCheckFramebufferStatus(GL_FRAMEBUFFER); glBindRenderbuffer(GL_RENDERBUFFER, 0); glBindFramebuffer(GL_FRAMEBUFFER, 0); |