| /* | |
| * Copyright 2012 Google Inc. | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| #ifndef GrFrameBufferObj_DEFINED | |
| #define GrFrameBufferObj_DEFINED | |
| #include "GrFakeRefObj.h" | |
| class GrFBBindableObj; | |
| //////////////////////////////////////////////////////////////////////////////// | |
| // TODO: when a framebuffer obj is bound the GL_SAMPLES query must return 0 | |
| // TODO: GL_STENCIL_BITS must also be redirected to the framebuffer | |
| class GrFrameBufferObj : public GrFakeRefObj { | |
| GR_DEFINE_CREATOR(GrFrameBufferObj); | |
| public: | |
| GrFrameBufferObj() | |
| : GrFakeRefObj() | |
| , fBound(false) | |
| , fColorBuffer(NULL) | |
| , fDepthBuffer(NULL) | |
| , fStencilBuffer(NULL) { | |
| } | |
| virtual ~GrFrameBufferObj() { | |
| fColorBuffer = NULL; | |
| fDepthBuffer = NULL; | |
| fStencilBuffer = NULL; | |
| } | |
| void setBound() { fBound = true; } | |
| void resetBound() { fBound = false; } | |
| bool getBound() const { return fBound; } | |
| void setColor(GrFBBindableObj *buffer); | |
| GrFBBindableObj *getColor() { return fColorBuffer; } | |
| void setDepth(GrFBBindableObj *buffer); | |
| GrFBBindableObj *getDepth() { return fDepthBuffer; } | |
| void setStencil(GrFBBindableObj *buffer); | |
| GrFBBindableObj *getStencil() { return fStencilBuffer; } | |
| virtual void deleteAction() SK_OVERRIDE { | |
| setColor(NULL); | |
| setDepth(NULL); | |
| setStencil(NULL); | |
| this->INHERITED::deleteAction(); | |
| } | |
| protected: | |
| private: | |
| bool fBound; // is this frame buffer currently bound via "glBindFramebuffer"? | |
| GrFBBindableObj * fColorBuffer; | |
| GrFBBindableObj * fDepthBuffer; | |
| GrFBBindableObj * fStencilBuffer; | |
| typedef GrFakeRefObj INHERITED; | |
| }; | |
| #endif // GrFrameBufferObj_DEFINED |