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