blob: 74ce2fa880b9715c466e2ff3c084c3a695b98f67 [file] [log] [blame]
//
// Copyright (c) 2002-2012 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.cpp: Implements the renderer-agnostic gl::Renderbuffer class,
// GL renderbuffer objects and related functionality.
// [OpenGL ES 2.0.24] section 4.4.3 page 108.
#include "libGLESv2/Renderbuffer.h"
#include "libGLESv2/Texture.h"
#include "libGLESv2/formatutils.h"
#include "libGLESv2/FramebufferAttachment.h"
#include "libGLESv2/renderer/d3d/RendererD3D.h"
#include "libGLESv2/renderer/RenderTarget.h"
#include "libGLESv2/renderer/RenderbufferImpl.h"
#include "common/utilities.h"
namespace gl
{
Renderbuffer::Renderbuffer(rx::RenderbufferImpl *impl, GLuint id)
: RefCountObject(id),
mRenderbuffer(impl),
mWidth(0),
mHeight(0),
mInternalFormat(GL_RGBA4),
mActualFormat(GL_RGBA4),
mSamples(0)
{
ASSERT(mRenderbuffer);
}
Renderbuffer::~Renderbuffer()
{
SafeDelete(mRenderbuffer);
}
Error Renderbuffer::setStorage(GLsizei width, GLsizei height, GLenum internalformat, GLsizei samples)
{
Error error = mRenderbuffer->setStorage(width, height, internalformat, samples);
if (error.isError())
{
return error;
}
mWidth = width;
mHeight = height;
mInternalFormat = internalformat;
mSamples = samples;
mActualFormat = mRenderbuffer->getActualFormat();
return Error(GL_NO_ERROR);
}
rx::RenderbufferImpl *Renderbuffer::getImplementation()
{
ASSERT(mRenderbuffer);
return mRenderbuffer;
}
GLsizei Renderbuffer::getWidth() const
{
return mWidth;
}
GLsizei Renderbuffer::getHeight() const
{
return mHeight;
}
GLenum Renderbuffer::getInternalFormat() const
{
return mInternalFormat;
}
GLenum Renderbuffer::getActualFormat() const
{
return mActualFormat;
}
GLsizei Renderbuffer::getSamples() const
{
return mSamples;
}
GLuint Renderbuffer::getRedSize() const
{
return GetInternalFormatInfo(getActualFormat()).redBits;
}
GLuint Renderbuffer::getGreenSize() const
{
return GetInternalFormatInfo(getActualFormat()).greenBits;
}
GLuint Renderbuffer::getBlueSize() const
{
return GetInternalFormatInfo(getActualFormat()).blueBits;
}
GLuint Renderbuffer::getAlphaSize() const
{
return GetInternalFormatInfo(getActualFormat()).alphaBits;
}
GLuint Renderbuffer::getDepthSize() const
{
return GetInternalFormatInfo(getActualFormat()).depthBits;
}
GLuint Renderbuffer::getStencilSize() const
{
return GetInternalFormatInfo(getActualFormat()).stencilBits;
}
}