OSDN Git Service

44e4169140893493cec56d2ec14833dedeca1b26
[android-x86/external-swiftshader.git] / src / Radiance / libRAD / Buffer.h
1 // SwiftShader Software Renderer\r
2 //\r
3 // Copyright(c) 2005-2012 TransGaming Inc.\r
4 //\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
10 //\r
11 \r
12 // Buffer.h: Defines the Buffer class, representing storage of vertex and/or\r
13 // index data. Implements GL buffer objects and related functionality.\r
14 // [OpenGL ES 2.0.24] section 2.9 page 21.\r
15 \r
16 #ifndef LIBGLESV2_BUFFER_H_\r
17 #define LIBGLESV2_BUFFER_H_\r
18 \r
19 #include "RefCountObject.h"\r
20 #include "Common/Resource.hpp"\r
21 \r
22 #define GL_APICALL\r
23 #include <GLES2/gl2.h>\r
24 \r
25 #include <cstddef>\r
26 #include <vector>\r
27 \r
28 namespace rad\r
29 {\r
30 class Buffer : public RefCountObject\r
31 {\r
32   public:\r
33     explicit Buffer(GLuint id);\r
34 \r
35     virtual ~Buffer();\r
36 \r
37     void bufferData(const void *data, GLsizeiptr size, GLenum usage);\r
38     void bufferSubData(const void *data, GLsizeiptr size, GLintptr offset);\r
39 \r
40         const void *data() { return mContents ? mContents->getBuffer() : 0; }\r
41     size_t size() const { return mSize; }\r
42     GLenum usage() const { return mUsage; }\r
43 \r
44         sw::Resource *getResource();\r
45 \r
46   private:\r
47     sw::Resource *mContents;\r
48     size_t mSize;\r
49     GLenum mUsage;\r
50 };\r
51 \r
52 }\r
53 \r
54 #endif   // LIBGLESV2_BUFFER_H_\r