GeometryData.hh 2.89 KB
Newer Older
1
////////////////////////////////////////////////////////////////////////////////
2
// Copyright (c) 2011, 2012 Computer Graphics Group RWTH Aachen University    //
3
4
5
// All rights reserved.                                                       //
////////////////////////////////////////////////////////////////////////////////

6
7
#ifndef ACGL_OPENGL_DATA_GEOMETRYDATA_HH
#define ACGL_OPENGL_DATA_GEOMETRYDATA_HH
8

9
10
/**
 */
11

12
#include <ACGL/ACGL.hh>
13

14
15
16
#include <ACGL/Base/Macros.hh>
#include <ACGL/OpenGL/GL.hh>
#include <ACGL/OpenGL/Objects/ArrayBuffer.hh> // get Attribute definition
17
18
19
20

namespace ACGL{
namespace OpenGL{

21
class GeometryData
22
23
{
    // ========================================================================================================= \/
24
    // ============================================================================================ CONSTRUCTORS \/
25
    // ========================================================================================================= \/
26
27
28
29
30
31
32
33
34
35
36
public:
    GeometryData(void)
    :   mpData(NULL),
        mSize(0),
        mStrideSize(0)
    {}

    virtual ~GeometryData(void)
    {
        delete[] mpData;
    }
37
38

    // ========================================================================================================= \/
39
    // ================================================================================================= GETTERS \/
40
41
    // ========================================================================================================= \/
public:
42
43
44
    GLubyte *getData       (void) const { return mpData;   }
    GLsizei  getSize       (void) const { return mSize;   }
    GLsizei  getStrideSize (void) const { return mStrideSize;  }
45
46

    // ========================================================================================================= \/
47
    // ================================================================================================= SETTERS \/
48
49
    // ========================================================================================================= \/
public:
50
51
52
    void setData      (GLubyte *_pData)      { mpData   = _pData;  }
    void setSize      (GLsizei  _size)       { mSize    = _size;  }
    void setStrideSize(GLsizei  _strideSize) { mStrideSize = _strideSize; }
53
54
55
56
57

    // ========================================================================================================= \/
    // ================================================================================================== FIELDS \/
    // ========================================================================================================= \/
private:
58
59
60
61
62
63
    GLubyte *mpData;      // raw data, just cast the pointer as needed
    GLsizei  mSize;       // size in bytes
    GLsizei  mStrideSize; // size in bytes of a stride

public:
    ArrayBuffer::AttributeVec mAttributes;
64
65
};

66
67
ACGL_SMARTPOINTER_TYPEDEFS(GeometryData)

68
69
70
} // OpenGL
} // ACGL

71
#endif // ACGL_OPENGL_DATA_GEOMETRYDATA_HH