1 // SwiftShader Software Renderer
\r
3 // Copyright(c) 2005-2012 TransGaming Inc.
\r
5 // All rights reserved. No part of this software may be copied, distributed, transmitted,
\r
6 // transcribed, stored in a retrieval system, translated into any human or computer
\r
7 // language by any means, or disclosed to third parties without the explicit written
\r
8 // agreement of TransGaming Inc. Without such an agreement, no rights or licenses, express
\r
9 // or implied, including but not limited to any patent rights, are granted to you.
\r
12 // ResourceManager.h : Defines the ResourceManager class, which tracks objects
\r
13 // shared by multiple GL contexts.
\r
15 #ifndef LIBGLESV2_RESOURCEMANAGER_H_
\r
16 #define LIBGLESV2_RESOURCEMANAGER_H_
\r
18 #include "HandleAllocator.h"
\r
21 #include <GLES2/gl2.h>
\r
43 class ResourceManager
\r
52 GLuint createBuffer();
\r
53 GLuint createShader(GLenum type);
\r
54 GLuint createProgram();
\r
55 GLuint createTexture();
\r
56 GLuint createRenderbuffer();
\r
58 void deleteBuffer(GLuint buffer);
\r
59 void deleteShader(GLuint shader);
\r
60 void deleteProgram(GLuint program);
\r
61 void deleteTexture(GLuint texture);
\r
62 void deleteRenderbuffer(GLuint renderbuffer);
\r
64 Buffer *getBuffer(GLuint handle);
\r
65 Shader *getShader(GLuint handle);
\r
66 Program *getProgram(GLuint handle);
\r
67 Texture *getTexture(GLuint handle);
\r
68 Renderbuffer *getRenderbuffer(GLuint handle);
\r
70 void setRenderbuffer(GLuint handle, Renderbuffer *renderbuffer);
\r
72 void checkBufferAllocation(unsigned int buffer);
\r
73 void checkTextureAllocation(GLuint texture, TextureType type);
\r
76 std::size_t mRefCount;
\r
78 typedef std::map<GLint, Buffer*> BufferMap;
\r
79 BufferMap mBufferMap;
\r
80 HandleAllocator mBufferHandleAllocator;
\r
82 typedef std::map<GLint, Shader*> ShaderMap;
\r
83 ShaderMap mShaderMap;
\r
85 typedef std::map<GLint, Program*> ProgramMap;
\r
86 ProgramMap mProgramMap;
\r
87 HandleAllocator mProgramShaderHandleAllocator;
\r
89 typedef std::map<GLint, Texture*> TextureMap;
\r
90 TextureMap mTextureMap;
\r
91 HandleAllocator mTextureHandleAllocator;
\r
93 typedef std::map<GLint, Renderbuffer*> RenderbufferMap;
\r
94 RenderbufferMap mRenderbufferMap;
\r
95 HandleAllocator mRenderbufferHandleAllocator;
\r
100 #endif // LIBGLESV2_RESOURCEMANAGER_H_
\r