blob: 820175de4b5061b6299bfa3321c9482dc9f1b824 [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
daniel@transgaming.com9ecb9f92010-07-28 19:21:12 +00007// Renderbuffer.h: Defines the wrapper class gl::Renderbuffer, as well as the
8// class hierarchy used to store its contents: RenderbufferStorage, Colorbuffer,
9// DepthStencilbuffer, Depthbuffer and Stencilbuffer. Implements GL renderbuffer
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000010// objects and related functionality. [OpenGL ES 2.0.24] section 4.4.3 page 108.
11
12#ifndef LIBGLESV2_RENDERBUFFER_H_
13#define LIBGLESV2_RENDERBUFFER_H_
14
shannon.woods%transgaming.com@gtempaccount.comf26ddae2013-04-13 03:29:13 +000015#include <GLES3/gl3.h>
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000016#include <GLES2/gl2.h>
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000017
alokp@chromium.orgea0e1af2010-03-22 19:33:14 +000018#include "common/angleutils.h"
apatrick@chromium.orgb66a7012012-01-23 20:04:48 +000019#include "common/RefCountObject.h"
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000020
daniel@transgaming.com70062c92012-11-28 19:32:30 +000021namespace rx
22{
23class Renderer;
shannon.woods@transgaming.comd2811d62013-02-28 23:11:19 +000024class SwapChain;
25class RenderTarget;
Geoff Lang391c8c52013-09-17 17:05:51 -040026class TextureStorage;
daniel@transgaming.com70062c92012-11-28 19:32:30 +000027}
28
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000029namespace gl
30{
daniel@transgaming.com46f2d0a2012-05-09 15:49:06 +000031class Texture2D;
32class TextureCubeMap;
Geoff Langd5d8e392013-07-25 16:53:03 -040033class Texture3D;
34class Texture2DArray;
Jamie Madill3c7fa222014-06-05 13:08:51 -040035class FramebufferAttachment;
daniel@transgaming.comf45e81d2011-11-09 17:46:02 +000036class Colorbuffer;
37class DepthStencilbuffer;
daniel@transgaming.com9ecb9f92010-07-28 19:21:12 +000038
Jamie Madill3c7fa222014-06-05 13:08:51 -040039class FramebufferAttachmentInterface
daniel@transgaming.comd14558a2011-11-09 17:46:18 +000040{
41 public:
Jamie Madill3c7fa222014-06-05 13:08:51 -040042 FramebufferAttachmentInterface();
daniel@transgaming.comd14558a2011-11-09 17:46:18 +000043
Jamie Madill3c7fa222014-06-05 13:08:51 -040044 virtual ~FramebufferAttachmentInterface() {};
daniel@transgaming.comd14558a2011-11-09 17:46:18 +000045
Jamie Madill3c7fa222014-06-05 13:08:51 -040046 virtual void addProxyRef(const FramebufferAttachment *proxy);
47 virtual void releaseProxy(const FramebufferAttachment *proxy);
daniel@transgaming.com2678b342012-01-18 16:29:40 +000048
daniel@transgaming.comd186dc72012-11-28 19:40:16 +000049 virtual rx::RenderTarget *getRenderTarget() = 0;
50 virtual rx::RenderTarget *getDepthStencil() = 0;
Geoff Lang391c8c52013-09-17 17:05:51 -040051 virtual rx::TextureStorage *getTextureStorage() = 0;
daniel@transgaming.comd14558a2011-11-09 17:46:18 +000052
53 virtual GLsizei getWidth() const = 0;
54 virtual GLsizei getHeight() const = 0;
55 virtual GLenum getInternalFormat() const = 0;
daniel@transgaming.com20d36662012-10-31 19:51:43 +000056 virtual GLenum getActualFormat() const = 0;
daniel@transgaming.comd14558a2011-11-09 17:46:18 +000057 virtual GLsizei getSamples() const = 0;
58
daniel@transgaming.comfbc39522011-11-11 04:10:28 +000059 virtual unsigned int getSerial() const = 0;
Geoff Lang784371d2014-05-16 12:39:04 -040060
61 virtual bool isTexture() const = 0;
Jamie Madillbfcda812013-10-22 13:07:33 -040062 virtual unsigned int getTextureSerial() const = 0;
daniel@transgaming.comd14558a2011-11-09 17:46:18 +000063
64 private:
Jamie Madill3c7fa222014-06-05 13:08:51 -040065 DISALLOW_COPY_AND_ASSIGN(FramebufferAttachmentInterface);
daniel@transgaming.comd14558a2011-11-09 17:46:18 +000066};
67
Jamie Madill3c7fa222014-06-05 13:08:51 -040068class Texture2DAttachment : public FramebufferAttachmentInterface
daniel@transgaming.comd14558a2011-11-09 17:46:18 +000069{
70 public:
Jamie Madill3c7fa222014-06-05 13:08:51 -040071 Texture2DAttachment(Texture2D *texture, GLint level);
daniel@transgaming.comd14558a2011-11-09 17:46:18 +000072
Jamie Madill3c7fa222014-06-05 13:08:51 -040073 virtual ~Texture2DAttachment();
daniel@transgaming.comd14558a2011-11-09 17:46:18 +000074
Jamie Madill3c7fa222014-06-05 13:08:51 -040075 void addProxyRef(const FramebufferAttachment *proxy);
76 void releaseProxy(const FramebufferAttachment *proxy);
daniel@transgaming.com2678b342012-01-18 16:29:40 +000077
daniel@transgaming.comd186dc72012-11-28 19:40:16 +000078 rx::RenderTarget *getRenderTarget();
79 rx::RenderTarget *getDepthStencil();
Geoff Lang391c8c52013-09-17 17:05:51 -040080 rx::TextureStorage *getTextureStorage();
daniel@transgaming.comd14558a2011-11-09 17:46:18 +000081
daniel@transgaming.comfbc39522011-11-11 04:10:28 +000082 virtual GLsizei getWidth() const;
83 virtual GLsizei getHeight() const;
84 virtual GLenum getInternalFormat() const;
daniel@transgaming.com20d36662012-10-31 19:51:43 +000085 virtual GLenum getActualFormat() const;
daniel@transgaming.comfbc39522011-11-11 04:10:28 +000086 virtual GLsizei getSamples() const;
87
88 virtual unsigned int getSerial() const;
Geoff Lang784371d2014-05-16 12:39:04 -040089
90 virtual bool isTexture() const;
Jamie Madillbfcda812013-10-22 13:07:33 -040091 virtual unsigned int getTextureSerial() const;
daniel@transgaming.comd14558a2011-11-09 17:46:18 +000092
93 private:
Jamie Madill3c7fa222014-06-05 13:08:51 -040094 DISALLOW_COPY_AND_ASSIGN(Texture2DAttachment);
daniel@transgaming.comd14558a2011-11-09 17:46:18 +000095
daniel@transgaming.com46f2d0a2012-05-09 15:49:06 +000096 BindingPointer <Texture2D> mTexture2D;
Geoff Lang8040f572013-07-25 16:49:54 -040097 const GLint mLevel;
daniel@transgaming.com46f2d0a2012-05-09 15:49:06 +000098};
99
Jamie Madill3c7fa222014-06-05 13:08:51 -0400100class TextureCubeMapAttachment : public FramebufferAttachmentInterface
daniel@transgaming.com46f2d0a2012-05-09 15:49:06 +0000101{
102 public:
Jamie Madill3c7fa222014-06-05 13:08:51 -0400103 TextureCubeMapAttachment(TextureCubeMap *texture, GLenum faceTarget, GLint level);
daniel@transgaming.com46f2d0a2012-05-09 15:49:06 +0000104
Jamie Madill3c7fa222014-06-05 13:08:51 -0400105 virtual ~TextureCubeMapAttachment();
daniel@transgaming.com46f2d0a2012-05-09 15:49:06 +0000106
Jamie Madill3c7fa222014-06-05 13:08:51 -0400107 void addProxyRef(const FramebufferAttachment *proxy);
108 void releaseProxy(const FramebufferAttachment *proxy);
daniel@transgaming.com46f2d0a2012-05-09 15:49:06 +0000109
daniel@transgaming.comd186dc72012-11-28 19:40:16 +0000110 rx::RenderTarget *getRenderTarget();
111 rx::RenderTarget *getDepthStencil();
Geoff Lang391c8c52013-09-17 17:05:51 -0400112 rx::TextureStorage *getTextureStorage();
daniel@transgaming.com46f2d0a2012-05-09 15:49:06 +0000113
114 virtual GLsizei getWidth() const;
115 virtual GLsizei getHeight() const;
116 virtual GLenum getInternalFormat() const;
daniel@transgaming.com20d36662012-10-31 19:51:43 +0000117 virtual GLenum getActualFormat() const;
daniel@transgaming.com46f2d0a2012-05-09 15:49:06 +0000118 virtual GLsizei getSamples() const;
119
120 virtual unsigned int getSerial() const;
Geoff Lang784371d2014-05-16 12:39:04 -0400121
122 virtual bool isTexture() const;
Jamie Madillbfcda812013-10-22 13:07:33 -0400123 virtual unsigned int getTextureSerial() const;
daniel@transgaming.com46f2d0a2012-05-09 15:49:06 +0000124
125 private:
Jamie Madill3c7fa222014-06-05 13:08:51 -0400126 DISALLOW_COPY_AND_ASSIGN(TextureCubeMapAttachment);
daniel@transgaming.com46f2d0a2012-05-09 15:49:06 +0000127
128 BindingPointer <TextureCubeMap> mTextureCubeMap;
Geoff Lang8040f572013-07-25 16:49:54 -0400129 const GLint mLevel;
130 const GLenum mFaceTarget;
daniel@transgaming.comd14558a2011-11-09 17:46:18 +0000131};
132
Jamie Madill3c7fa222014-06-05 13:08:51 -0400133class Texture3DAttachment : public FramebufferAttachmentInterface
Geoff Langd5d8e392013-07-25 16:53:03 -0400134{
135public:
Jamie Madill3c7fa222014-06-05 13:08:51 -0400136 Texture3DAttachment(Texture3D *texture, GLint level, GLint layer);
Geoff Langd5d8e392013-07-25 16:53:03 -0400137
Jamie Madill3c7fa222014-06-05 13:08:51 -0400138 virtual ~Texture3DAttachment();
Geoff Langd5d8e392013-07-25 16:53:03 -0400139
Jamie Madill3c7fa222014-06-05 13:08:51 -0400140 void addProxyRef(const FramebufferAttachment *proxy);
141 void releaseProxy(const FramebufferAttachment *proxy);
Geoff Langd5d8e392013-07-25 16:53:03 -0400142
143 rx::RenderTarget *getRenderTarget();
144 rx::RenderTarget *getDepthStencil();
Geoff Lang391c8c52013-09-17 17:05:51 -0400145 rx::TextureStorage *getTextureStorage();
Geoff Langd5d8e392013-07-25 16:53:03 -0400146
147 virtual GLsizei getWidth() const;
148 virtual GLsizei getHeight() const;
149 virtual GLenum getInternalFormat() const;
150 virtual GLenum getActualFormat() const;
151 virtual GLsizei getSamples() const;
152
153 virtual unsigned int getSerial() const;
Geoff Lang784371d2014-05-16 12:39:04 -0400154
155 virtual bool isTexture() const;
Jamie Madillbfcda812013-10-22 13:07:33 -0400156 virtual unsigned int getTextureSerial() const;
Geoff Langd5d8e392013-07-25 16:53:03 -0400157
158private:
Jamie Madill3c7fa222014-06-05 13:08:51 -0400159 DISALLOW_COPY_AND_ASSIGN(Texture3DAttachment);
Geoff Langd5d8e392013-07-25 16:53:03 -0400160
161 BindingPointer<Texture3D> mTexture3D;
162 const GLint mLevel;
163 const GLint mLayer;
164};
165
Jamie Madill3c7fa222014-06-05 13:08:51 -0400166class Texture2DArrayAttachment : public FramebufferAttachmentInterface
Geoff Langd5d8e392013-07-25 16:53:03 -0400167{
168public:
Jamie Madill3c7fa222014-06-05 13:08:51 -0400169 Texture2DArrayAttachment(Texture2DArray *texture, GLint level, GLint layer);
Geoff Langd5d8e392013-07-25 16:53:03 -0400170
Jamie Madill3c7fa222014-06-05 13:08:51 -0400171 virtual ~Texture2DArrayAttachment();
Geoff Langd5d8e392013-07-25 16:53:03 -0400172
Jamie Madill3c7fa222014-06-05 13:08:51 -0400173 void addProxyRef(const FramebufferAttachment *proxy);
174 void releaseProxy(const FramebufferAttachment *proxy);
Geoff Langd5d8e392013-07-25 16:53:03 -0400175
176 rx::RenderTarget *getRenderTarget();
177 rx::RenderTarget *getDepthStencil();
Geoff Lang391c8c52013-09-17 17:05:51 -0400178 rx::TextureStorage *getTextureStorage();
Geoff Langd5d8e392013-07-25 16:53:03 -0400179
180 virtual GLsizei getWidth() const;
181 virtual GLsizei getHeight() const;
182 virtual GLenum getInternalFormat() const;
183 virtual GLenum getActualFormat() const;
184 virtual GLsizei getSamples() const;
185
186 virtual unsigned int getSerial() const;
Geoff Lang784371d2014-05-16 12:39:04 -0400187
188 virtual bool isTexture() const;
Jamie Madillbfcda812013-10-22 13:07:33 -0400189 virtual unsigned int getTextureSerial() const;
Geoff Langd5d8e392013-07-25 16:53:03 -0400190
191private:
Jamie Madill3c7fa222014-06-05 13:08:51 -0400192 DISALLOW_COPY_AND_ASSIGN(Texture2DArrayAttachment);
Geoff Langd5d8e392013-07-25 16:53:03 -0400193
194 BindingPointer<Texture2DArray> mTexture2DArray;
195 const GLint mLevel;
196 const GLint mLayer;
197};
198
daniel@transgaming.com9ecb9f92010-07-28 19:21:12 +0000199// A class derived from RenderbufferStorage is created whenever glRenderbufferStorage
200// is called. The specific concrete type depends on whether the internal format is
201// colour depth, stencil or packed depth/stencil.
Jamie Madill3c7fa222014-06-05 13:08:51 -0400202class RenderbufferStorage : public FramebufferAttachmentInterface
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000203{
204 public:
daniel@transgaming.com9ecb9f92010-07-28 19:21:12 +0000205 RenderbufferStorage();
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000206
daniel@transgaming.com9ecb9f92010-07-28 19:21:12 +0000207 virtual ~RenderbufferStorage() = 0;
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000208
daniel@transgaming.comd186dc72012-11-28 19:40:16 +0000209 virtual rx::RenderTarget *getRenderTarget();
210 virtual rx::RenderTarget *getDepthStencil();
Geoff Lang391c8c52013-09-17 17:05:51 -0400211 virtual rx::TextureStorage *getTextureStorage();
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000212
daniel@transgaming.comd2fd4f22011-02-01 18:49:11 +0000213 virtual GLsizei getWidth() const;
214 virtual GLsizei getHeight() const;
215 virtual GLenum getInternalFormat() const;
daniel@transgaming.com20d36662012-10-31 19:51:43 +0000216 virtual GLenum getActualFormat() const;
daniel@transgaming.comd14558a2011-11-09 17:46:18 +0000217 virtual GLsizei getSamples() const;
daniel@transgaming.com092bd482010-05-12 03:39:36 +0000218
daniel@transgaming.comfbc39522011-11-11 04:10:28 +0000219 virtual unsigned int getSerial() const;
Geoff Lang784371d2014-05-16 12:39:04 -0400220
221 virtual bool isTexture() const;
222 virtual unsigned int getTextureSerial() const;
daniel@transgaming.comfbc39522011-11-11 04:10:28 +0000223
Geoff Lang8040f572013-07-25 16:49:54 -0400224 static unsigned int issueSerials(GLuint count);
daniel@transgaming.comfbc39522011-11-11 04:10:28 +0000225
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000226 protected:
daniel@transgaming.comd2fd4f22011-02-01 18:49:11 +0000227 GLsizei mWidth;
228 GLsizei mHeight;
229 GLenum mInternalFormat;
daniel@transgaming.com20d36662012-10-31 19:51:43 +0000230 GLenum mActualFormat;
daniel@transgaming.com1f135d82010-08-24 19:20:36 +0000231 GLsizei mSamples;
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000232
233 private:
daniel@transgaming.com9ecb9f92010-07-28 19:21:12 +0000234 DISALLOW_COPY_AND_ASSIGN(RenderbufferStorage);
daniel@transgaming.comfbc39522011-11-11 04:10:28 +0000235
236 const unsigned int mSerial;
237
238 static unsigned int mCurrentSerial;
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000239};
240
Jamie Madill3c7fa222014-06-05 13:08:51 -0400241// FramebufferAttachment implements the GL renderbuffer object.
242// It's only a proxy for a FramebufferAttachmentInterface instance; the internal object
daniel@transgaming.com9ecb9f92010-07-28 19:21:12 +0000243// can change whenever glRenderbufferStorage is called.
Jamie Madill3c7fa222014-06-05 13:08:51 -0400244class FramebufferAttachment : public RefCountObject
daniel@transgaming.com9ecb9f92010-07-28 19:21:12 +0000245{
246 public:
Jamie Madill3c7fa222014-06-05 13:08:51 -0400247 FramebufferAttachment(rx::Renderer *renderer, GLuint id, FramebufferAttachmentInterface *storage);
daniel@transgaming.com9ecb9f92010-07-28 19:21:12 +0000248
Jamie Madill3c7fa222014-06-05 13:08:51 -0400249 virtual ~FramebufferAttachment();
daniel@transgaming.com9ecb9f92010-07-28 19:21:12 +0000250
daniel@transgaming.com2678b342012-01-18 16:29:40 +0000251 // These functions from RefCountObject are overloaded here because
252 // Textures need to maintain their own count of references to them via
253 // Renderbuffers/RenderbufferTextures. These functions invoke those
Jamie Madill3c7fa222014-06-05 13:08:51 -0400254 // reference counting functions on the FramebufferAttachmentInterface.
daniel@transgaming.com2678b342012-01-18 16:29:40 +0000255 void addRef() const;
256 void release() const;
257
daniel@transgaming.comd186dc72012-11-28 19:40:16 +0000258 rx::RenderTarget *getRenderTarget();
259 rx::RenderTarget *getDepthStencil();
Geoff Lang391c8c52013-09-17 17:05:51 -0400260 rx::TextureStorage *getTextureStorage();
daniel@transgaming.com9ecb9f92010-07-28 19:21:12 +0000261
daniel@transgaming.comd2fd4f22011-02-01 18:49:11 +0000262 GLsizei getWidth() const;
263 GLsizei getHeight() const;
264 GLenum getInternalFormat() const;
daniel@transgaming.com20d36662012-10-31 19:51:43 +0000265 GLenum getActualFormat() const;
daniel@transgaming.comd2fd4f22011-02-01 18:49:11 +0000266 GLuint getRedSize() const;
267 GLuint getGreenSize() const;
268 GLuint getBlueSize() const;
269 GLuint getAlphaSize() const;
270 GLuint getDepthSize() const;
271 GLuint getStencilSize() const;
Geoff Lang0a804792013-08-13 13:09:43 -0400272 GLenum getComponentType() const;
273 GLenum getColorEncoding() const;
daniel@transgaming.comd2fd4f22011-02-01 18:49:11 +0000274 GLsizei getSamples() const;
275
daniel@transgaming.com9ecb9f92010-07-28 19:21:12 +0000276 unsigned int getSerial() const;
Geoff Lang784371d2014-05-16 12:39:04 -0400277
278 bool isTexture() const;
Jamie Madillbfcda812013-10-22 13:07:33 -0400279 unsigned int getTextureSerial() const;
daniel@transgaming.com9ecb9f92010-07-28 19:21:12 +0000280
281 void setStorage(RenderbufferStorage *newStorage);
daniel@transgaming.com9ecb9f92010-07-28 19:21:12 +0000282
283 private:
Jamie Madill3c7fa222014-06-05 13:08:51 -0400284 DISALLOW_COPY_AND_ASSIGN(FramebufferAttachment);
daniel@transgaming.com9ecb9f92010-07-28 19:21:12 +0000285
shannonwoods@chromium.orgf6fb9592013-05-30 00:09:40 +0000286 rx::Renderer const *mRenderer;
Jamie Madill3c7fa222014-06-05 13:08:51 -0400287 FramebufferAttachmentInterface *mInstance;
daniel@transgaming.com9ecb9f92010-07-28 19:21:12 +0000288};
289
290class Colorbuffer : public RenderbufferStorage
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000291{
292 public:
daniel@transgaming.com70062c92012-11-28 19:32:30 +0000293 Colorbuffer(rx::Renderer *renderer, rx::SwapChain *swapChain);
294 Colorbuffer(rx::Renderer *renderer, GLsizei width, GLsizei height, GLenum format, GLsizei samples);
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000295
daniel@transgaming.comd2fd4f22011-02-01 18:49:11 +0000296 virtual ~Colorbuffer();
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000297
daniel@transgaming.comd186dc72012-11-28 19:40:16 +0000298 virtual rx::RenderTarget *getRenderTarget();
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000299
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000300 private:
301 DISALLOW_COPY_AND_ASSIGN(Colorbuffer);
daniel@transgaming.comd2fd4f22011-02-01 18:49:11 +0000302
daniel@transgaming.com042d1b42012-11-28 19:37:09 +0000303 rx::RenderTarget *mRenderTarget;
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000304};
305
daniel@transgaming.com9ecb9f92010-07-28 19:21:12 +0000306class DepthStencilbuffer : public RenderbufferStorage
daniel@transgaming.comcdacc8e2010-07-28 19:20:50 +0000307{
308 public:
daniel@transgaming.com70062c92012-11-28 19:32:30 +0000309 DepthStencilbuffer(rx::Renderer *renderer, rx::SwapChain *swapChain);
310 DepthStencilbuffer(rx::Renderer *renderer, GLsizei width, GLsizei height, GLsizei samples);
daniel@transgaming.comcdacc8e2010-07-28 19:20:50 +0000311
312 ~DepthStencilbuffer();
313
daniel@transgaming.comd186dc72012-11-28 19:40:16 +0000314 virtual rx::RenderTarget *getDepthStencil();
daniel@transgaming.comcdacc8e2010-07-28 19:20:50 +0000315
daniel@transgaming.comd14558a2011-11-09 17:46:18 +0000316 protected:
daniel@transgaming.com042d1b42012-11-28 19:37:09 +0000317 rx::RenderTarget *mDepthStencil;
daniel@transgaming.comd14558a2011-11-09 17:46:18 +0000318
daniel@transgaming.comcdacc8e2010-07-28 19:20:50 +0000319 private:
320 DISALLOW_COPY_AND_ASSIGN(DepthStencilbuffer);
daniel@transgaming.comcdacc8e2010-07-28 19:20:50 +0000321};
322
323class Depthbuffer : public DepthStencilbuffer
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000324{
325 public:
daniel@transgaming.com70062c92012-11-28 19:32:30 +0000326 Depthbuffer(rx::Renderer *renderer, GLsizei width, GLsizei height, GLsizei samples);
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000327
daniel@transgaming.comd2fd4f22011-02-01 18:49:11 +0000328 virtual ~Depthbuffer();
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000329
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000330 private:
331 DISALLOW_COPY_AND_ASSIGN(Depthbuffer);
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000332};
333
daniel@transgaming.comcdacc8e2010-07-28 19:20:50 +0000334class Stencilbuffer : public DepthStencilbuffer
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000335{
336 public:
daniel@transgaming.com70062c92012-11-28 19:32:30 +0000337 Stencilbuffer(rx::Renderer *renderer, GLsizei width, GLsizei height, GLsizei samples);
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000338
daniel@transgaming.comd2fd4f22011-02-01 18:49:11 +0000339 virtual ~Stencilbuffer();
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000340
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000341 private:
342 DISALLOW_COPY_AND_ASSIGN(Stencilbuffer);
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +0000343};
344}
345
346#endif // LIBGLESV2_RENDERBUFFER_H_