00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef VRS_OPENGL_GL2_ATTRIBUTEDSHAPE_H
00029 #define VRS_OPENGL_GL2_ATTRIBUTEDSHAPE_H
00030
00031 #include <vrs/container/dictionary.h>
00032 #include <vrs/opengl/vertexattributebufferobjectgl.h>
00033 #include <vrs/shape.h>
00034
00035 namespace VRS {
00036 namespace GL2 {
00037
00038 class VRS_CORE_API AttributedShape :
00039 public Shape
00040 {
00041 public:
00042 VRS_TYPEINFO(AttributedShape, Shape);
00043 VRS_SERIALIZABLE(AttributedShape);
00044
00045 AttributedShape(
00046 GLenum primitiveType = GL_TRIANGLES,
00047 const Bounds& bbox = Bounds(),
00048 SO<BaseVertexAttributeBufferObjectGL> indices = NULL,
00049 const ID& id01 = ID(), SO<BaseVertexAttributeBufferObjectGL> data01 = NULL, bool normalized01 = false,
00050 const ID& id02 = ID(), SO<BaseVertexAttributeBufferObjectGL> data02 = NULL, bool normalized02 = false,
00051 const ID& id03 = ID(), SO<BaseVertexAttributeBufferObjectGL> data03 = NULL, bool normalized03 = false,
00052 const ID& id04 = ID(), SO<BaseVertexAttributeBufferObjectGL> data04 = NULL, bool normalized04 = false,
00053 const ID& id05 = ID(), SO<BaseVertexAttributeBufferObjectGL> data05 = NULL, bool normalized05 = false,
00054 const ID& id06 = ID(), SO<BaseVertexAttributeBufferObjectGL> data06 = NULL, bool normalized06 = false,
00055 const ID& id07 = ID(), SO<BaseVertexAttributeBufferObjectGL> data07 = NULL, bool normalized07 = false,
00056 const ID& id08 = ID(), SO<BaseVertexAttributeBufferObjectGL> data08 = NULL, bool normalized08 = false,
00057 const ID& id09 = ID(), SO<BaseVertexAttributeBufferObjectGL> data09 = NULL, bool normalized09 = false,
00058 const ID& id10 = ID(), SO<BaseVertexAttributeBufferObjectGL> data10 = NULL, bool normalized10 = false,
00059 const ID& id11 = ID(), SO<BaseVertexAttributeBufferObjectGL> data11 = NULL, bool normalized11 = false,
00060 const ID& id12 = ID(), SO<BaseVertexAttributeBufferObjectGL> data12 = NULL, bool normalized12 = false,
00061 const ID& id13 = ID(), SO<BaseVertexAttributeBufferObjectGL> data13 = NULL, bool normalized13 = false,
00062 const ID& id14 = ID(), SO<BaseVertexAttributeBufferObjectGL> data14 = NULL, bool normalized14 = false,
00063 const ID& id15 = ID(), SO<BaseVertexAttributeBufferObjectGL> data15 = NULL, bool normalized15 = false,
00064 const ID& id16 = ID(), SO<BaseVertexAttributeBufferObjectGL> data16 = NULL, bool normalized16 = false
00065 );
00066
00067 virtual GLenum primitiveType() const;
00068
00069 virtual Bounds boundingBox() const;
00070
00071 virtual SO<BaseVertexAttributeBufferObjectGL> indices() const;
00072
00073 virtual SO<Iterator<ID> > availableIDs() const;
00074 virtual SO<BaseVertexAttributeBufferObjectGL> data(const ID& id) const;
00075 virtual bool normalized(const ID& id) const;
00076
00077 virtual void add(const ID& id, SO<BaseVertexAttributeBufferObjectGL> data, bool normalized);
00078 virtual bool remove(const ID& id);
00079 virtual bool contains(const ID& id);
00080
00081 virtual unsigned int usedMemory() const;
00082
00083 private:
00084 GLenum m_primitiveType;
00085 Bounds m_bbox;
00086 SO<BaseVertexAttributeBufferObjectGL> m_indices;
00087 SO<Dictionary<ID, SO<BaseVertexAttributeBufferObjectGL> > > m_datas;
00088 SO<Dictionary<ID, bool> > m_normalizeds;
00089 };
00090
00091 }
00092 }
00093
00094 #endif // VRS_OPENGL_GL2_ATTRIBUTEDSHAPE_H