blob: 632361e5363a878dcee5476552e2276e8c9848d7 [file] [log] [blame]
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +00001//
2// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
3// Use of this source code is governed by a BSD-style license that can be
4// found in the LICENSE file.
5//
6
7// Renderbuffer.h: Defines the virtual gl::Renderbuffer class and its derived
8// classes Colorbuffer, Depthbuffer and Stencilbuffer. Implements GL renderbuffer
9// objects and related functionality. [OpenGL ES 2.0.24] section 4.4.3 page 108.
10
11#ifndef LIBGLESV2_RENDERBUFFER_H_
12#define LIBGLESV2_RENDERBUFFER_H_
13
14#define GL_APICALL
15#include <GLES2/gl2.h>
16#include <d3d9.h>
17
alokp@chromium.orgea0e1af2010-03-22 19:33:14 +000018#include "common/angleutils.h"
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000019
20namespace gl
21{
22class Renderbuffer
23{
24 public:
25 Renderbuffer();
26
27 virtual ~Renderbuffer();
28
29 virtual bool isColorbuffer();
30 virtual bool isDepthbuffer();
31 virtual bool isStencilbuffer();
32
33 virtual IDirect3DSurface9 *getRenderTarget();
34 virtual IDirect3DSurface9 *getDepthStencil();
35
36 int getWidth();
37 int getHeight();
daniel@transgaming.com4901fca2010-04-20 18:52:41 +000038 GLenum getFormat();
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000039
40 protected:
41 int mWidth;
42 int mHeight;
daniel@transgaming.com4901fca2010-04-20 18:52:41 +000043 GLenum mFormat;
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000044
45 private:
46 DISALLOW_COPY_AND_ASSIGN(Renderbuffer);
47};
48
49class Colorbuffer : public Renderbuffer
50{
51 public:
daniel@transgaming.com70d312a2010-04-20 18:52:38 +000052 explicit Colorbuffer(IDirect3DSurface9 *renderTarget);
53 Colorbuffer(int width, int height, GLenum format);
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000054
55 ~Colorbuffer();
56
57 bool isColorbuffer();
58
59 GLuint getRedSize();
60 GLuint getGreenSize();
61 GLuint getBlueSize();
62 GLuint getAlphaSize();
63
64 IDirect3DSurface9 *getRenderTarget();
65
66 protected:
67 IDirect3DSurface9 *mRenderTarget;
68
69 private:
70 DISALLOW_COPY_AND_ASSIGN(Colorbuffer);
71};
72
73class Depthbuffer : public Renderbuffer
74{
75 public:
daniel@transgaming.com70d312a2010-04-20 18:52:38 +000076 explicit Depthbuffer(IDirect3DSurface9 *depthStencil);
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000077 Depthbuffer(int width, int height);
78
79 ~Depthbuffer();
80
81 bool isDepthbuffer();
82
83 GLuint getDepthSize();
84
85 IDirect3DSurface9 *getDepthStencil();
86
87 private:
88 DISALLOW_COPY_AND_ASSIGN(Depthbuffer);
89 IDirect3DSurface9 *mDepthStencil;
90};
91
92class Stencilbuffer : public Renderbuffer
93{
94 public:
daniel@transgaming.com70d312a2010-04-20 18:52:38 +000095 explicit Stencilbuffer(IDirect3DSurface9 *depthStencil);
daniel@transgaming.com4a9d65c2010-03-08 21:30:56 +000096 Stencilbuffer(int width, int height);
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000097
98 ~Stencilbuffer();
99
100 bool isStencilbuffer();
101
102 GLuint getStencilSize();
103
104 IDirect3DSurface9 *getDepthStencil();
105
106 private:
107 DISALLOW_COPY_AND_ASSIGN(Stencilbuffer);
108 IDirect3DSurface9 *mDepthStencil;
109};
110}
111
112#endif // LIBGLESV2_RENDERBUFFER_H_