History

FIund a nasty bug with the scissor which was the reason for many issues, tried to integrate the framebuffer setup and clear as part of the enginepipeline so calling display side is simpler

Sam Gateau committed 11 years ago

Commit cb375e81 parent 66cd17e8 files · +79 −108Browse files

Showing the changes to libraries/render-utils/src/FramebufferCache.cpp (1 of 8 files). Show all

Unified · Split

libraries/render-utils/src/FramebufferCache.cpp+19−8
@@ -34,7 +34,8 @@ void FramebufferCache::setFrameBufferSize(QSize frameBufferSize) { · 33 unmodified lines
3434 //If the size changed, we need to delete our FBOs
3535 if (_frameBufferSize != frameBufferSize) {
3636 _frameBufferSize = frameBufferSize;
37− _primaryFramebuffer.reset();
37+ _primaryFramebufferFull.reset();
38+ _primaryFramebufferDepthColor.reset();
3839 _primaryDepthTexture.reset();
3940 _primaryColorTexture.reset();
4041 _primaryNormalTexture.reset();
@@ -45,7 +46,8 @@ void FramebufferCache::setFrameBufferSize(QSize frameBufferSize) { · 4 unmodified lines
4546 }
4647
4748 void FramebufferCache::createPrimaryFramebuffer() {
48− _primaryFramebuffer = gpu::FramebufferPointer(gpu::Framebuffer::create());
49+ _primaryFramebufferFull = gpu::FramebufferPointer(gpu::Framebuffer::create());
50+ _primaryFramebufferDepthColor = gpu::FramebufferPointer(gpu::Framebuffer::create());
4951
5052 auto colorFormat = gpu::Element(gpu::VEC4, gpu::NUINT8, gpu::RGBA);
5153 auto width = _frameBufferSize.width();
@@ -56,24 +58,33 @@ void FramebufferCache::createPrimaryFramebuffer() { · 4 unmodified lines
5658 _primaryNormalTexture = gpu::TexturePointer(gpu::Texture::create2D(colorFormat, width, height, defaultSampler));
5759 _primarySpecularTexture = gpu::TexturePointer(gpu::Texture::create2D(colorFormat, width, height, defaultSampler));
5860
59− _primaryFramebuffer->setRenderBuffer(0, _primaryColorTexture);
60− _primaryFramebuffer->setRenderBuffer(1, _primaryNormalTexture);
61− _primaryFramebuffer->setRenderBuffer(2, _primarySpecularTexture);
61+ _primaryFramebufferFull->setRenderBuffer(0, _primaryColorTexture);
62+ _primaryFramebufferFull->setRenderBuffer(1, _primaryNormalTexture);
63+ _primaryFramebufferFull->setRenderBuffer(2, _primarySpecularTexture);
6264
65+ _primaryFramebufferDepthColor->setRenderBuffer(0, _primaryColorTexture);
6366
6467 auto depthFormat = gpu::Element(gpu::SCALAR, gpu::FLOAT, gpu::DEPTH);
6568 _primaryDepthTexture = gpu::TexturePointer(gpu::Texture::create2D(depthFormat, width, height, defaultSampler));
6669
67− _primaryFramebuffer->setDepthStencilBuffer(_primaryDepthTexture, depthFormat);
70+ _primaryFramebufferFull->setDepthStencilBuffer(_primaryDepthTexture, depthFormat);
71+
72+ _primaryFramebufferDepthColor->setDepthStencilBuffer(_primaryDepthTexture, depthFormat);
6873 }
6974
7075 gpu::FramebufferPointer FramebufferCache::getPrimaryFramebuffer() {
71− if (!_primaryFramebuffer) {
76+ if (!_primaryFramebufferFull) {
7277 createPrimaryFramebuffer();
7378 }
74− return _primaryFramebuffer;
79+ return _primaryFramebufferFull;
7580 }
7681
82+gpu::FramebufferPointer FramebufferCache::getPrimaryFramebufferDepthColor() {
83+ if (!_primaryFramebufferDepthColor) {
84+ createPrimaryFramebuffer();
85+ }
86+ return _primaryFramebufferDepthColor;
87+}
7788
7889
7990 gpu::TexturePointer FramebufferCache::getPrimaryDepthTexture() {