Split RenderbufferTexture into 2D and CubeMap specific variants
Issue=306
Signed-off-by: Nicolas Capens
git-svn-id: https://angleproject.googlecode.com/svn/trunk@1078 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Renderbuffer.cpp b/src/libGLESv2/Renderbuffer.cpp
index 6004255..ed3dbac 100644
--- a/src/libGLESv2/Renderbuffer.cpp
+++ b/src/libGLESv2/Renderbuffer.cpp
@@ -63,68 +63,136 @@
return dx2es::GetStencilSize(getD3DFormat());
}
-RenderbufferTexture::RenderbufferTexture(Texture *texture, GLenum target) : mTarget(target)
+///// RenderbufferTexture2D Implementation ////////
+
+RenderbufferTexture2D::RenderbufferTexture2D(Texture2D *texture, GLenum target) : mTarget(target)
{
- mTexture.set(texture);
+ mTexture2D.set(texture);
}
-RenderbufferTexture::~RenderbufferTexture()
+RenderbufferTexture2D::~RenderbufferTexture2D()
{
- mTexture.set(NULL);
+ mTexture2D.set(NULL);
}
// Textures need to maintain their own reference count for references via
// Renderbuffers acting as proxies. Here, we notify the texture of a reference.
-void RenderbufferTexture::addProxyRef(const Renderbuffer *proxy)
+void RenderbufferTexture2D::addProxyRef(const Renderbuffer *proxy)
{
- mTexture->addProxyRef(proxy);
+ mTexture2D->addProxyRef(proxy);
}
-void RenderbufferTexture::releaseProxy(const Renderbuffer *proxy)
+void RenderbufferTexture2D::releaseProxy(const Renderbuffer *proxy)
{
- mTexture->releaseProxy(proxy);
+ mTexture2D->releaseProxy(proxy);
}
-IDirect3DSurface9 *RenderbufferTexture::getRenderTarget()
+IDirect3DSurface9 *RenderbufferTexture2D::getRenderTarget()
{
- return mTexture->getRenderTarget(mTarget);
+ return mTexture2D->getRenderTarget(mTarget);
}
-IDirect3DSurface9 *RenderbufferTexture::getDepthStencil()
+IDirect3DSurface9 *RenderbufferTexture2D::getDepthStencil()
{
return NULL;
}
-GLsizei RenderbufferTexture::getWidth() const
+GLsizei RenderbufferTexture2D::getWidth() const
{
- return mTexture->getWidth(0);
-}
-
-GLsizei RenderbufferTexture::getHeight() const
-{
- return mTexture->getHeight(0);
-}
-
-GLenum RenderbufferTexture::getInternalFormat() const
-{
- return mTexture->getInternalFormat();
+ return mTexture2D->getWidth(0);
}
-D3DFORMAT RenderbufferTexture::getD3DFormat() const
+GLsizei RenderbufferTexture2D::getHeight() const
{
- return mTexture->getD3DFormat();
+ return mTexture2D->getHeight(0);
}
-GLsizei RenderbufferTexture::getSamples() const
+GLenum RenderbufferTexture2D::getInternalFormat() const
+{
+ return mTexture2D->getInternalFormat();
+}
+
+D3DFORMAT RenderbufferTexture2D::getD3DFormat() const
+{
+ return mTexture2D->getD3DFormat();
+}
+
+GLsizei RenderbufferTexture2D::getSamples() const
{
return 0;
}
-unsigned int RenderbufferTexture::getSerial() const
+unsigned int RenderbufferTexture2D::getSerial() const
{
- return mTexture->getRenderTargetSerial(mTarget);
+ return mTexture2D->getRenderTargetSerial(mTarget);
}
+///// RenderbufferTextureCubeMap Implementation ////////
+
+RenderbufferTextureCubeMap::RenderbufferTextureCubeMap(TextureCubeMap *texture, GLenum target) : mTarget(target)
+{
+ mTextureCubeMap.set(texture);
+}
+
+RenderbufferTextureCubeMap::~RenderbufferTextureCubeMap()
+{
+ mTextureCubeMap.set(NULL);
+}
+
+// Textures need to maintain their own reference count for references via
+// Renderbuffers acting as proxies. Here, we notify the texture of a reference.
+void RenderbufferTextureCubeMap::addProxyRef(const Renderbuffer *proxy)
+{
+ mTextureCubeMap->addProxyRef(proxy);
+}
+
+void RenderbufferTextureCubeMap::releaseProxy(const Renderbuffer *proxy)
+{
+ mTextureCubeMap->releaseProxy(proxy);
+}
+
+IDirect3DSurface9 *RenderbufferTextureCubeMap::getRenderTarget()
+{
+ return mTextureCubeMap->getRenderTarget(mTarget);
+}
+
+IDirect3DSurface9 *RenderbufferTextureCubeMap::getDepthStencil()
+{
+ return NULL;
+}
+
+GLsizei RenderbufferTextureCubeMap::getWidth() const
+{
+ return mTextureCubeMap->getWidth(0);
+}
+
+GLsizei RenderbufferTextureCubeMap::getHeight() const
+{
+ return mTextureCubeMap->getHeight(0);
+}
+
+GLenum RenderbufferTextureCubeMap::getInternalFormat() const
+{
+ return mTextureCubeMap->getInternalFormat();
+}
+
+D3DFORMAT RenderbufferTextureCubeMap::getD3DFormat() const
+{
+ return mTextureCubeMap->getD3DFormat();
+}
+
+GLsizei RenderbufferTextureCubeMap::getSamples() const
+{
+ return 0;
+}
+
+unsigned int RenderbufferTextureCubeMap::getSerial() const
+{
+ return mTextureCubeMap->getRenderTargetSerial(mTarget);
+}
+
+////// Renderbuffer Implementation //////
+
Renderbuffer::Renderbuffer(GLuint id, RenderbufferInterface *instance) : RefCountObject(id)
{
ASSERT(instance != NULL);