Apply the depth texture correctly as the DepthStencil surface in applyRenderTarget
Trac #20875
Signed-off-by: Nicolas Capens
git-svn-id: https://angleproject.googlecode.com/svn/trunk@1115 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Framebuffer.cpp b/src/libGLESv2/Framebuffer.cpp
index 1277c06..21972ac 100644
--- a/src/libGLESv2/Framebuffer.cpp
+++ b/src/libGLESv2/Framebuffer.cpp
@@ -29,6 +29,7 @@
mColorbufferPointer.set(NULL);
mDepthbufferPointer.set(NULL);
mStencilbufferPointer.set(NULL);
+ mNullColorbufferPointer.set(NULL);
}
Renderbuffer *Framebuffer::lookupRenderbuffer(GLenum type, GLuint handle) const
@@ -200,6 +201,30 @@
return mStencilbufferPointer.get();
}
+Renderbuffer *Framebuffer::getNullColorbuffer()
+{
+ Renderbuffer *nullbuffer = mNullColorbufferPointer.get();
+ Renderbuffer *depthbuffer = getDepthbuffer();
+
+ if (!depthbuffer)
+ {
+ ERR("Unexpected null depthbuffer for depth-only FBO.");
+ return NULL;
+ }
+
+ GLsizei width = depthbuffer->getWidth();
+ GLsizei height = depthbuffer->getHeight();
+
+ if (!nullbuffer ||
+ width != nullbuffer->getWidth() || height != nullbuffer->getHeight())
+ {
+ nullbuffer = new Renderbuffer(0, new Colorbuffer(width, height, GL_NONE, 0));
+ mNullColorbufferPointer.set(nullbuffer);
+ }
+
+ return nullbuffer;
+}
+
GLenum Framebuffer::getColorbufferType()
{
return mColorbufferType;