1 // 2 // Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved. 3 // Use of this source code is governed by a BSD-style license that can be 4 // found in the LICENSE file. 5 // 6 7 // HandleAllocator.h: Defines the gl::HandleAllocator class, which is used to 8 // allocate GL handles. 9 10 #ifndef LIBGLESV2_HANDLEALLOCATOR_H_ 11 #define LIBGLESV2_HANDLEALLOCATOR_H_ 12 13 #include <GLES3/gl3.h> 14 #include <GLES2/gl2.h> 15 16 #include <vector> 17 18 #include "common/angleutils.h" 19 20 namespace gl 21 { 22 23 class HandleAllocator 24 { 25 public: 26 HandleAllocator(); 27 virtual ~HandleAllocator(); 28 29 void setBaseHandle(GLuint value); 30 31 GLuint allocate(); 32 void release(GLuint handle); 33 34 private: 35 DISALLOW_COPY_AND_ASSIGN(HandleAllocator); 36 37 GLuint mBaseValue; 38 GLuint mNextValue; 39 typedef std::vector<GLuint> HandleList; 40 HandleList mFreeValues; 41 }; 42 43 } 44 45 #endif // LIBGLESV2_HANDLEALLOCATOR_H_ 46