blob: 7672a8cd46bb47e2c57a46e06af9ad39b055ecb9 [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();
38
39 protected:
40 int mWidth;
41 int mHeight;
42
43 private:
44 DISALLOW_COPY_AND_ASSIGN(Renderbuffer);
45};
46
47class Colorbuffer : public Renderbuffer
48{
49 public:
daniel@transgaming.com70d312a2010-04-20 18:52:38 +000050 explicit Colorbuffer(IDirect3DSurface9 *renderTarget);
51 Colorbuffer(int width, int height, GLenum format);
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000052
53 ~Colorbuffer();
54
55 bool isColorbuffer();
56
57 GLuint getRedSize();
58 GLuint getGreenSize();
59 GLuint getBlueSize();
60 GLuint getAlphaSize();
61
62 IDirect3DSurface9 *getRenderTarget();
63
64 protected:
65 IDirect3DSurface9 *mRenderTarget;
66
67 private:
68 DISALLOW_COPY_AND_ASSIGN(Colorbuffer);
69};
70
71class Depthbuffer : public Renderbuffer
72{
73 public:
daniel@transgaming.com70d312a2010-04-20 18:52:38 +000074 explicit Depthbuffer(IDirect3DSurface9 *depthStencil);
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000075 Depthbuffer(int width, int height);
76
77 ~Depthbuffer();
78
79 bool isDepthbuffer();
80
81 GLuint getDepthSize();
82
83 IDirect3DSurface9 *getDepthStencil();
84
85 private:
86 DISALLOW_COPY_AND_ASSIGN(Depthbuffer);
87 IDirect3DSurface9 *mDepthStencil;
88};
89
90class Stencilbuffer : public Renderbuffer
91{
92 public:
daniel@transgaming.com70d312a2010-04-20 18:52:38 +000093 explicit Stencilbuffer(IDirect3DSurface9 *depthStencil);
daniel@transgaming.com4a9d65c2010-03-08 21:30:56 +000094 Stencilbuffer(int width, int height);
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000095
96 ~Stencilbuffer();
97
98 bool isStencilbuffer();
99
100 GLuint getStencilSize();
101
102 IDirect3DSurface9 *getDepthStencil();
103
104 private:
105 DISALLOW_COPY_AND_ASSIGN(Stencilbuffer);
106 IDirect3DSurface9 *mDepthStencil;
107};
108}
109
110#endif // LIBGLESV2_RENDERBUFFER_H_