11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2011 Google Inc. 41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 81cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 91cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 101cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 111cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#ifndef GrGLVertexBuffer_DEFINED 121cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GrGLVertexBuffer_DEFINED 131cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 144f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenberger#include "../GrVertexBuffer.h" 154f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenberger#include "gl/GrGLInterface.h" 161cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 171cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerclass GrGpuGL; 181cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 191cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerclass GrGLVertexBuffer : public GrVertexBuffer { 201cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 211cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerpublic: 221cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger virtual ~GrGLVertexBuffer() { this->release(); } 231cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger // overrides of GrVertexBuffer 241cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger virtual void* lock(); 251cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger virtual void* lockPtr() const; 261cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger virtual void unlock(); 271cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger virtual bool isLocked() const; 281cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger virtual bool updateData(const void* src, size_t srcSizeInBytes); 291cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger GrGLuint bufferID() const; 301cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 311cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerprotected: 321cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger GrGLVertexBuffer(GrGpuGL* gpu, 331cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger GrGLuint id, 341cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger size_t sizeInBytes, 351cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger bool dynamic); 361cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 371cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger // overrides of GrResource 381cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger virtual void onAbandon(); 391cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger virtual void onRelease(); 401cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 411cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerprivate: 421cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger void bind() const; 431cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 441cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger GrGLuint fBufferID; 451cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger void* fLockPtr; 461cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 471cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger friend class GrGpuGL; 481cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 491cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger typedef GrVertexBuffer INHERITED; 501cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger}; 511cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 521cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#endif 53