gfx/skia/trunk/src/gpu/gl/debug/GrFrameBufferObj.h

branch
TOR_BUG_3246
changeset 5
4ab42b5ab56c
equal deleted inserted replaced
-1:000000000000 0:117da633d3fa
1
2 /*
3 * Copyright 2012 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
9 #ifndef GrFrameBufferObj_DEFINED
10 #define GrFrameBufferObj_DEFINED
11
12 #include "GrFakeRefObj.h"
13 class GrFBBindableObj;
14
15 ////////////////////////////////////////////////////////////////////////////////
16 // TODO: when a framebuffer obj is bound the GL_SAMPLES query must return 0
17 // TODO: GL_STENCIL_BITS must also be redirected to the framebuffer
18 class GrFrameBufferObj : public GrFakeRefObj {
19 GR_DEFINE_CREATOR(GrFrameBufferObj);
20
21 public:
22 GrFrameBufferObj()
23 : GrFakeRefObj()
24 , fBound(false)
25 , fColorBuffer(NULL)
26 , fDepthBuffer(NULL)
27 , fStencilBuffer(NULL) {
28 }
29
30 virtual ~GrFrameBufferObj() {
31 fColorBuffer = NULL;
32 fDepthBuffer = NULL;
33 fStencilBuffer = NULL;
34 }
35
36 void setBound() { fBound = true; }
37 void resetBound() { fBound = false; }
38 bool getBound() const { return fBound; }
39
40 void setColor(GrFBBindableObj *buffer);
41 GrFBBindableObj *getColor() { return fColorBuffer; }
42
43 void setDepth(GrFBBindableObj *buffer);
44 GrFBBindableObj *getDepth() { return fDepthBuffer; }
45
46 void setStencil(GrFBBindableObj *buffer);
47 GrFBBindableObj *getStencil() { return fStencilBuffer; }
48
49 virtual void deleteAction() SK_OVERRIDE {
50
51 setColor(NULL);
52 setDepth(NULL);
53 setStencil(NULL);
54
55 this->INHERITED::deleteAction();
56 }
57
58 protected:
59 private:
60 bool fBound; // is this frame buffer currently bound via "glBindFramebuffer"?
61 GrFBBindableObj * fColorBuffer;
62 GrFBBindableObj * fDepthBuffer;
63 GrFBBindableObj * fStencilBuffer;
64
65 typedef GrFakeRefObj INHERITED;
66 };
67
68 #endif // GrFrameBufferObj_DEFINED

mercurial