OLD | NEW |
| (Empty) |
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(nullptr) | |
26 , fDepthBuffer(nullptr) | |
27 , fStencilBuffer(nullptr) { | |
28 } | |
29 | |
30 virtual ~GrFrameBufferObj() { | |
31 fColorBuffer = nullptr; | |
32 fDepthBuffer = nullptr; | |
33 fStencilBuffer = nullptr; | |
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 void deleteAction() override { | |
50 | |
51 setColor(nullptr); | |
52 setDepth(nullptr); | |
53 setStencil(nullptr); | |
54 | |
55 this->INHERITED::deleteAction(); | |
56 } | |
57 | |
58 protected: | |
59 private: | |
60 bool fBound; // is this frame buffer currently bound via "glBindFrame
buffer"? | |
61 GrFBBindableObj * fColorBuffer; | |
62 GrFBBindableObj * fDepthBuffer; | |
63 GrFBBindableObj * fStencilBuffer; | |
64 | |
65 typedef GrFakeRefObj INHERITED; | |
66 }; | |
67 | |
68 #endif // GrFrameBufferObj_DEFINED | |
OLD | NEW |