• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 GrBufferObj_DEFINED
10 #define GrBufferObj_DEFINED
11 
12 #include "GrFakeRefObj.h"
13 #include "../GrGLDefines.h"
14 
15 ////////////////////////////////////////////////////////////////////////////////
16 class GrBufferObj : public GrFakeRefObj {
17     GR_DEFINE_CREATOR(GrBufferObj);
18 
19 public:
GrBufferObj()20     GrBufferObj()
21         : GrFakeRefObj()
22         , fDataPtr(NULL)
23         , fMapped(false)
24         , fBound(false)
25         , fSize(0)
26         , fUsage(GR_GL_STATIC_DRAW) {
27     }
~GrBufferObj()28     virtual ~GrBufferObj() {
29         delete[] fDataPtr;
30     }
31 
access()32     void access() {
33         // cannot access the buffer if it is currently mapped
34         GrAlwaysAssert(!fMapped);
35     }
36 
setMapped()37     void setMapped()             { fMapped = true; }
resetMapped()38     void resetMapped()           { fMapped = false; }
getMapped()39     bool getMapped() const       { return fMapped; }
40 
setBound()41     void setBound()              { fBound = true; }
resetBound()42     void resetBound()            { fBound = false; }
getBound()43     bool getBound() const        { return fBound; }
44 
45     void allocate(GrGLint size, const GrGLchar *dataPtr);
getSize()46     GrGLint getSize() const      { return fSize; }
getDataPtr()47     GrGLchar *getDataPtr()       { return fDataPtr; }
48 
setUsage(GrGLint usage)49     void setUsage(GrGLint usage) { fUsage = usage; }
getUsage()50     GrGLint getUsage() const     { return fUsage; }
51 
52     virtual void deleteAction() SK_OVERRIDE;
53 
54 protected:
55 private:
56 
57     GrGLchar*   fDataPtr;
58     bool        fMapped;       // is the buffer object mapped via "glMapBuffer"?
59     bool        fBound;        // is the buffer object bound via "glBindBuffer"?
60     GrGLint     fSize;         // size in bytes
61     GrGLint     fUsage;        // one of: GL_STREAM_DRAW,
62                                //         GL_STATIC_DRAW,
63                                //         GL_DYNAMIC_DRAW
64 
65     typedef GrFakeRefObj INHERITED;
66 };
67 
68 #endif // GrBufferObj_DEFINED
69