blob: 30ae73492e0f1435857a9b48e927805c6327080d [file] [log] [blame]
reed@google.comac10a2d2010-12-22 21:39:39 +00001/*
2 Copyright 2010 Google Inc.
3
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:
28 GrGLVertexBuffer(GLuint id,
29 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);
reed@google.comac10a2d2010-12-22 21:39:39 +000046 GLuint bufferID() const;
47
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;
52 GLuint fBufferID;
53 void* fLockPtr;
54
55 friend class GrGpuGL;
56
57 typedef GrVertexBuffer INHERITED;
58};
59
60#endif