Sharing for buffer, texture and renderbuffer objects.
TRAC #12496
Derive Renderbuffer, Texture and Buffer from RefCountObject.
This class keeps a reference count for all objects that need cross-context
reference counting, and also the object id.
Restructure Renderbuffers to create a wrapper object and a storage object.
Use BindingPointer for all binding points instead of binding by object id.
Signed-off-by: Shannon Woods
Signed-off-by: Daniel Koch
git-svn-id: https://angleproject.googlecode.com/svn/trunk@364 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Framebuffer.h b/src/libGLESv2/Framebuffer.h
index caa608f..5f4e481 100644
--- a/src/libGLESv2/Framebuffer.h
+++ b/src/libGLESv2/Framebuffer.h
@@ -15,9 +15,11 @@
#include <d3d9.h>
#include "common/angleutils.h"
+#include "libGLESv2/RefCountObject.h"
namespace gl
{
+class Renderbuffer;
class Colorbuffer;
class Depthbuffer;
class Stencilbuffer;
@@ -26,9 +28,9 @@
class Framebuffer
{
public:
- explicit Framebuffer(GLuint handle);
+ Framebuffer();
- ~Framebuffer();
+ virtual ~Framebuffer();
void setColorbuffer(GLenum type, GLuint colorbuffer);
void setDepthbuffer(GLenum type, GLuint depthbuffer);
@@ -55,22 +57,35 @@
GLuint getDepthbufferHandle();
GLuint getStencilbufferHandle();
- GLenum completeness();
+ virtual GLenum completeness();
+
+ protected:
+ GLenum mColorbufferType;
+ BindingPointer<Renderbuffer> mColorbufferPointer;
+
+ GLenum mDepthbufferType;
+ BindingPointer<Renderbuffer> mDepthbufferPointer;
+
+ GLenum mStencilbufferType;
+ BindingPointer<Renderbuffer> mStencilbufferPointer;
private:
DISALLOW_COPY_AND_ASSIGN(Framebuffer);
- GLuint mColorbufferHandle;
- GLenum mColorbufferType;
-
- GLuint mDepthbufferHandle;
- GLenum mDepthbufferType;
-
- GLuint mStencilbufferHandle;
- GLenum mStencilbufferType;
-
- GLuint mHandle;
+ Renderbuffer *lookupRenderbuffer(GLenum type, GLuint handle) const;
};
+
+class DefaultFramebuffer : public Framebuffer
+{
+ public:
+ DefaultFramebuffer(Colorbuffer *color, DepthStencilbuffer *depthStencil);
+
+ virtual GLenum completeness();
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(DefaultFramebuffer);
+};
+
}
#endif // LIBGLESV2_FRAMEBUFFER_H_