00001 // Copyright (C) 2008-2012 Nikolaus Gebhardt 00002 // This file is part of the "Irrlicht Engine". 00003 // For conditions of distribution and use, see copyright notice in irrlicht.h 00004 00005 #ifndef __I_INDEX_BUFFER_H_INCLUDED__ 00006 #define __I_INDEX_BUFFER_H_INCLUDED__ 00007 00008 #include "IReferenceCounted.h" 00009 #include "irrArray.h" 00010 00011 #include "SVertexIndex.h" 00012 00013 namespace irr 00014 { 00015 00016 namespace video 00017 { 00018 00019 } 00020 00021 namespace scene 00022 { 00023 00024 class IIndexBuffer : public virtual IReferenceCounted 00025 { 00026 public: 00027 00028 virtual void* getData() =0; 00029 00030 virtual video::E_INDEX_TYPE getType() const =0; 00031 virtual void setType(video::E_INDEX_TYPE IndexType) =0; 00032 00033 virtual u32 stride() const =0; 00034 00035 virtual u32 size() const =0; 00036 virtual void push_back (const u32 &element) =0; 00037 virtual u32 operator [](u32 index) const =0; 00038 virtual u32 getLast() =0; 00039 virtual void setValue(u32 index, u32 value) =0; 00040 virtual void set_used(u32 usedNow) =0; 00041 virtual void reallocate(u32 new_size) =0; 00042 virtual u32 allocated_size() const=0; 00043 00044 virtual void* pointer() =0; 00045 00047 virtual E_HARDWARE_MAPPING getHardwareMappingHint() const =0; 00048 00050 virtual void setHardwareMappingHint( E_HARDWARE_MAPPING NewMappingHint ) =0; 00051 00053 virtual void setDirty() = 0; 00054 00056 00057 virtual u32 getChangedID() const = 0; 00058 }; 00059 00060 00061 } // end namespace scene 00062 } // end namespace irr 00063 00064 #endif 00065