1 // Copyright (C) 2008-2012 Nikolaus Gebhardt 2 // This file is part of the "Irrlicht Engine". 3 // For conditions of distribution and use, see copyright notice in irrlicht.h 4 5 #ifndef __I_INDEX_BUFFER_H_INCLUDED__ 6 #define __I_INDEX_BUFFER_H_INCLUDED__ 7 8 #include "IReferenceCounted.h" 9 #include "irrArray.h" 10 11 #include "SVertexIndex.h" 12 13 namespace irr 14 { 15 16 namespace video 17 { 18 19 } 20 21 namespace scene 22 { 23 24 class IIndexBuffer : public virtual IReferenceCounted 25 { 26 public: 27 28 virtual void* getData() =0; 29 30 virtual video::E_INDEX_TYPE getType() const =0; 31 virtual void setType(video::E_INDEX_TYPE IndexType) =0; 32 33 virtual u32 stride() const =0; 34 35 virtual u32 size() const =0; 36 virtual void push_back (const u32 &element) =0; 37 virtual u32 operator [](u32 index) const =0; 38 virtual u32 getLast() =0; 39 virtual void setValue(u32 index, u32 value) =0; 40 virtual void set_used(u32 usedNow) =0; 41 virtual void reallocate(u32 new_size) =0; 42 virtual u32 allocated_size() const=0; 43 44 virtual void* pointer() =0; 45 46 //! get the current hardware mapping hint 47 virtual E_HARDWARE_MAPPING getHardwareMappingHint() const =0; 48 49 //! set the hardware mapping hint, for driver 50 virtual void setHardwareMappingHint( E_HARDWARE_MAPPING NewMappingHint ) =0; 51 52 //! flags the meshbuffer as changed, reloads hardware buffers 53 virtual void setDirty() = 0; 54 55 //! Get the currently used ID for identification of changes. 56 /** This shouldn't be used for anything outside the VideoDriver. */ 57 virtual u32 getChangedID() const = 0; 58 }; 59 60 61 } // end namespace scene 62 } // end namespace irr 63 64 #endif 65 66