|
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 #define GL_APICALL |
|
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_ |