| // | |
| // 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 renderer-agnostic container class gl::Renderbuffer. | |
| // Implements GL renderbuffer objects and related functionality. | |
| // [OpenGL ES 2.0.24] section 4.4.3 page 108. | |
| #ifndef LIBANGLE_RENDERBUFFER_H_ | |
| #define LIBANGLE_RENDERBUFFER_H_ | |
| #include "angle_gl.h" | |
| #include "common/angleutils.h" | |
| #include "libANGLE/Error.h" | |
| #include "libANGLE/FramebufferAttachment.h" | |
| #include "libANGLE/renderer/RenderbufferImpl.h" | |
| namespace gl | |
| { | |
| // A GL renderbuffer object is usually used as a depth or stencil buffer attachment | |
| // for a framebuffer object. The renderbuffer itself is a distinct GL object, see | |
| // FramebufferAttachment and Framebuffer for how they are applied to an FBO via an | |
| // attachment point. | |
| class Renderbuffer : public FramebufferAttachmentObject | |
| { | |
| public: | |
| Renderbuffer(rx::RenderbufferImpl *impl, GLuint id); | |
| virtual ~Renderbuffer(); | |
| Error setStorage(GLenum internalformat, size_t width, size_t height); | |
| Error setStorageMultisample(size_t samples, GLenum internalformat, size_t width, size_t height); | |
| rx::RenderbufferImpl *getImplementation(); | |
| const rx::RenderbufferImpl *getImplementation() const; | |
| GLsizei getWidth() const; | |
| GLsizei getHeight() const; | |
| GLenum getInternalFormat() const; | |
| GLsizei getSamples() const; | |
| GLuint getRedSize() const; | |
| GLuint getGreenSize() const; | |
| GLuint getBlueSize() const; | |
| GLuint getAlphaSize() const; | |
| GLuint getDepthSize() const; | |
| GLuint getStencilSize() const; | |
| // FramebufferAttachmentObject Impl | |
| GLsizei getAttachmentWidth(const FramebufferAttachment::Target &/*target*/) const override { return getWidth(); } | |
| GLsizei getAttachmentHeight(const FramebufferAttachment::Target &/*target*/) const override { return getHeight(); } | |
| GLenum getAttachmentInternalFormat(const FramebufferAttachment::Target &/*target*/) const override { return getInternalFormat(); } | |
| GLsizei getAttachmentSamples(const FramebufferAttachment::Target &/*target*/) const override { return getSamples(); } | |
| private: | |
| rx::FramebufferAttachmentObjectImpl *getAttachmentImpl() const override { return mRenderbuffer; } | |
| rx::RenderbufferImpl *mRenderbuffer; | |
| GLsizei mWidth; | |
| GLsizei mHeight; | |
| GLenum mInternalFormat; | |
| GLsizei mSamples; | |
| }; | |
| } | |
| #endif // LIBANGLE_RENDERBUFFER_H_ |