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