blob: fd1ffa4d6aada603fbf16c64a6c28ec6a4938e7b [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
Shannon Woods9fc51d92014-10-17 13:08:51 -04007// Renderbuffer.h: Defines the renderer-agnostic container class gl::Renderbuffer.
8// Implements GL renderbuffer objects and related functionality.
9// [OpenGL ES 2.0.24] section 4.4.3 page 108.
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000010
11#ifndef LIBGLESV2_RENDERBUFFER_H_
12#define LIBGLESV2_RENDERBUFFER_H_
13
Jamie Madillf51639a2014-06-25 16:04:57 -040014#include "angle_gl.h"
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000015
alokp@chromium.orgea0e1af2010-03-22 19:33:14 +000016#include "common/angleutils.h"
apatrick@chromium.orgb66a7012012-01-23 20:04:48 +000017#include "common/RefCountObject.h"
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000018
daniel@transgaming.com70062c92012-11-28 19:32:30 +000019namespace rx
20{
Shannon Woods9fc51d92014-10-17 13:08:51 -040021class RenderbufferImpl;
daniel@transgaming.com70062c92012-11-28 19:32:30 +000022}
23
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000024namespace gl
25{
Jamie Madille261b442014-06-25 12:42:21 -040026class FramebufferAttachment;
Jamie Madill6c7b4ad2014-06-16 10:33:59 -040027
28// A GL renderbuffer object is usually used as a depth or stencil buffer attachment
29// for a framebuffer object. The renderbuffer itself is a distinct GL object, see
30// FramebufferAttachment and Framebuffer for how they are applied to an FBO via an
31// attachment point.
32
33class Renderbuffer : public RefCountObject
34{
35 public:
Shannon Woods9fc51d92014-10-17 13:08:51 -040036 Renderbuffer(rx::RenderbufferImpl *impl, GLuint id);
Cooper Partin75c42f42014-08-11 10:16:44 -070037 virtual ~Renderbuffer();
Jamie Madill6c7b4ad2014-06-16 10:33:59 -040038
Shannon Woods9fc51d92014-10-17 13:08:51 -040039 void setStorage(GLsizei width, GLsizei height, GLenum internalformat, GLsizei samples);
40
41 rx::RenderbufferImpl *getImpl();
Jamie Madill6c7b4ad2014-06-16 10:33:59 -040042
43 GLsizei getWidth() const;
44 GLsizei getHeight() const;
45 GLenum getInternalFormat() const;
46 GLenum getActualFormat() const;
47 GLsizei getSamples() const;
48 GLuint getRedSize() const;
49 GLuint getGreenSize() const;
50 GLuint getBlueSize() const;
51 GLuint getAlphaSize() const;
52 GLuint getDepthSize() const;
53 GLuint getStencilSize() const;
54
55 private:
Shannon Woods9fc51d92014-10-17 13:08:51 -040056 DISALLOW_COPY_AND_ASSIGN(Renderbuffer);
Geoff Langd5d8e392013-07-25 16:53:03 -040057
Shannon Woods9fc51d92014-10-17 13:08:51 -040058 rx::RenderbufferImpl *mRenderbuffer;
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000059
daniel@transgaming.comd2fd4f22011-02-01 18:49:11 +000060 GLsizei mWidth;
61 GLsizei mHeight;
62 GLenum mInternalFormat;
daniel@transgaming.com20d36662012-10-31 19:51:43 +000063 GLenum mActualFormat;
daniel@transgaming.com1f135d82010-08-24 19:20:36 +000064 GLsizei mSamples;
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000065};
Jamie Madill6c7b4ad2014-06-16 10:33:59 -040066
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000067}
68
69#endif // LIBGLESV2_RENDERBUFFER_H_