summaryrefslogtreecommitdiffstats
path: root/ANGLE/src/libGLESv2/Renderbuffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'ANGLE/src/libGLESv2/Renderbuffer.h')
-rw-r--r--ANGLE/src/libGLESv2/Renderbuffer.h120
1 files changed, 120 insertions, 0 deletions
diff --git a/ANGLE/src/libGLESv2/Renderbuffer.h b/ANGLE/src/libGLESv2/Renderbuffer.h
new file mode 100644
index 0000000..2c70ce9
--- /dev/null
+++ b/ANGLE/src/libGLESv2/Renderbuffer.h
@@ -0,0 +1,120 @@
+//
+// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+// Renderbuffer.h: Defines the virtual gl::Renderbuffer class and its derived
+// classes Colorbuffer, Depthbuffer and Stencilbuffer. Implements GL renderbuffer
+// objects and related functionality. [OpenGL ES 2.0.24] section 4.4.3 page 108.
+
+#ifndef LIBGLESV2_RENDERBUFFER_H_
+#define LIBGLESV2_RENDERBUFFER_H_
+
+#define GL_APICALL
+#include <GLES2/gl2.h>
+#include <d3d9.h>
+
+#include "common/angleutils.h"
+
+namespace gl
+{
+class Renderbuffer
+{
+ public:
+ Renderbuffer();
+
+ virtual ~Renderbuffer();
+
+ virtual bool isColorbuffer();
+ virtual bool isDepthbuffer();
+ virtual bool isStencilbuffer();
+
+ virtual IDirect3DSurface9 *getRenderTarget();
+ virtual IDirect3DSurface9 *getDepthStencil();
+
+ virtual int getWidth();
+ virtual int getHeight();
+ GLenum getFormat();
+ unsigned int getSerial() const;
+
+ static unsigned int issueSerial();
+
+ protected:
+ void setSize(int width, int height);
+ GLenum mFormat;
+ unsigned int mSerial;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(Renderbuffer);
+
+ static unsigned int mCurrentSerial;
+
+ int mWidth;
+ int mHeight;
+};
+
+class Colorbuffer : public Renderbuffer
+{
+ public:
+ explicit Colorbuffer(IDirect3DSurface9 *renderTarget);
+ Colorbuffer(int width, int height, GLenum format);
+
+ ~Colorbuffer();
+
+ bool isColorbuffer();
+
+ GLuint getRedSize();
+ GLuint getGreenSize();
+ GLuint getBlueSize();
+ GLuint getAlphaSize();
+
+ IDirect3DSurface9 *getRenderTarget();
+
+ protected:
+ IDirect3DSurface9 *mRenderTarget;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(Colorbuffer);
+};
+
+class Depthbuffer : public Renderbuffer
+{
+ public:
+ explicit Depthbuffer(IDirect3DSurface9 *depthStencil);
+ Depthbuffer(int width, int height);
+
+ ~Depthbuffer();
+
+ bool isDepthbuffer();
+
+ GLuint getDepthSize();
+
+ IDirect3DSurface9 *getDepthStencil();
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(Depthbuffer);
+ IDirect3DSurface9 *mDepthStencil;
+};
+
+class Stencilbuffer : public Renderbuffer
+{
+ public:
+ explicit Stencilbuffer(IDirect3DSurface9 *depthStencil);
+ Stencilbuffer(int width, int height);
+
+ ~Stencilbuffer();
+
+ bool isStencilbuffer();
+
+ GLuint getStencilSize();
+
+ IDirect3DSurface9 *getDepthStencil();
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(Stencilbuffer);
+ IDirect3DSurface9 *mDepthStencil;
+};
+}
+
+#endif // LIBGLESV2_RENDERBUFFER_H_