GrGLVertexBuffer.h revision dd182cbca60a7f0003330c01dfc64f69f56aea90
1
2/*
3 * Copyright 2011 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
10
11#ifndef GrGLVertexBuffer_DEFINED
12#define GrGLVertexBuffer_DEFINED
13
14#include "../GrVertexBuffer.h"
15#include "GrGLInterface.h"
16
17class GrGpuGL;
18
19class GrGLVertexBuffer : public GrVertexBuffer {
20
21public:
22    virtual ~GrGLVertexBuffer() { this->release(); }
23    // overrides of GrVertexBuffer
24    virtual void* lock();
25    virtual void* lockPtr() const;
26    virtual void unlock();
27    virtual bool isLocked() const;
28    virtual bool updateData(const void* src, size_t srcSizeInBytes);
29    GrGLuint bufferID() const;
30
31protected:
32    GrGLVertexBuffer(GrGpuGL* gpu,
33                     GrGLuint id,
34                     size_t sizeInBytes,
35                     bool dynamic);
36
37    // overrides of GrResource
38    virtual void onAbandon();
39    virtual void onRelease();
40
41private:
42    void bind() const;
43
44    GrGLuint     fBufferID;
45    void*        fLockPtr;
46
47    friend class GrGpuGL;
48
49    typedef GrVertexBuffer INHERITED;
50};
51
52#endif
53