diff options
Diffstat (limited to 'ANGLE/src/libGLESv2/Renderbuffer.h')
-rw-r--r-- | ANGLE/src/libGLESv2/Renderbuffer.h | 120 |
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_ |