Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / API_Bilat_GL / INC / BufferObject.h
1 #ifndef BUFFER_OBJECT_H
2 #define BUFFER_OBJECT_H
3
4 #include "envBilatGL.h"
5 #include "bilat_GL.h"
6
7 /**
8 * Create Buffer in a valide OpenGL context
9 *
10 *
11 * When can I instancied a BufferObject ?
12 *
13 * Using API :
14 * in GLUTWindowCustomiser_A.init() ! (ps reshape,display are other possiblities)
15 * Using GLUT :
16 * after glutCreateWindow(...)
17 */
18 class CBI_GL BufferObject
19 {
20
21 public:
22 /**
23 * @param bufferUsage (GL_STREAM_DRAW, GL_STREAM_READ, GL_STREAM_COPY, GL_STATIC_DRAW, GL_STATIC_READ, GL_STATIC_COPY, GL_DYNAMIC_DRAW, GL_DYNAMIC_READ, or GL_DYNAMIC_COPY)
24 * @param target (GL_ARRAY_BUFFER, GL_ELEMENT_ARRAY_BUFFER, GL_PIXEL_PACK_BUFFER, or GL_PIXEL_UNPACK_BUFFER)
25 */
26 BufferObject(GLenum target, unsigned int sizeOctet, void* bufferData, GLenum bufferUsage);
27 virtual ~BufferObject();
28
29 void bindBuffer();
30 void unBindBuffer();
31
32 void bufferData(unsigned int sizeOctet, void* bufferData,GLenum bufferUsage);
33 void bufferSubData(unsigned int offset,unsigned int sizeOctet, void* bufferData);
34
35 /**
36 * @param access (GL_READ_ONLY, GL_WRITE_ONLY, or GL_READ_WRITE)
37 */
38 void* map(GLenum access);
39 bool unMap(void);
40
41 unsigned int getBufferID() const;
42
43 protected:
44 GLuint bufferID; //Identifiant OpenGL
45 GLenum target;
46
47 };
48
49 #endif