blob: c4f62a0e4a66e7658e504e131374cff0f880f231 [file] [log] [blame]
reed@google.comac10a2d2010-12-22 21:39:39 +00001/*
twiz@google.com0f31ca72011-03-18 17:38:11 +00002 Copyright 2011 Google Inc.
reed@google.comac10a2d2010-12-22 21:39:39 +00003
4 Licensed under the Apache License, Version 2.0 (the "License");
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
7
8 http://www.apache.org/licenses/LICENSE-2.0
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15 */
16
17
18#ifndef GrGLVertexBuffer_DEFINED
19#define GrGLVertexBuffer_DEFINED
20
21#include "GrVertexBuffer.h"
22#include "GrGLConfig.h"
23
24class GrGpuGL;
25
26class GrGLVertexBuffer : public GrVertexBuffer {
27protected:
twiz@google.com0f31ca72011-03-18 17:38:11 +000028 GrGLVertexBuffer(GrGLuint id,
reed@google.comac10a2d2010-12-22 21:39:39 +000029 GrGpuGL* gl,
bsalomon@google.com1c13c962011-02-14 16:51:21 +000030 size_t sizeInBytes,
reed@google.comac10a2d2010-12-22 21:39:39 +000031 bool dynamic);
32
33public:
34 virtual ~GrGLVertexBuffer();
35
36 // overrides of GrVertexBuffer
37 virtual void abandon();
38 virtual void* lock();
bsalomon@google.com1c13c962011-02-14 16:51:21 +000039 virtual void* lockPtr() const;
reed@google.comac10a2d2010-12-22 21:39:39 +000040 virtual void unlock();
41 virtual bool isLocked() const;
bsalomon@google.com1c13c962011-02-14 16:51:21 +000042 virtual bool updateData(const void* src, size_t srcSizeInBytes);
43 virtual bool updateSubData(const void* src,
44 size_t srcSizeInBytes,
45 size_t offset);
twiz@google.com0f31ca72011-03-18 17:38:11 +000046 GrGLuint bufferID() const;
reed@google.comac10a2d2010-12-22 21:39:39 +000047
48private:
bsalomon@google.com1c13c962011-02-14 16:51:21 +000049 void bind() const;
50
reed@google.comac10a2d2010-12-22 21:39:39 +000051 GrGpuGL* fGL;
twiz@google.com0f31ca72011-03-18 17:38:11 +000052 GrGLuint fBufferID;
reed@google.comac10a2d2010-12-22 21:39:39 +000053 void* fLockPtr;
54
55 friend class GrGpuGL;
56
57 typedef GrVertexBuffer INHERITED;
58};
59
60#endif