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_VERTEX_BUFFER_H_INCLUDED__ 6 #define __I_VERTEX_BUFFER_H_INCLUDED__ 7 8 #include "IReferenceCounted.h" 9 #include "irrArray.h" 10 #include "S3DVertex.h" 11 12 namespace irr 13 { 14 namespace scene 15 { 16 17 class IVertexBuffer : public virtual IReferenceCounted 18 { 19 public: 20 virtual void* getData() =0; 21 virtual video::E_VERTEX_TYPE getType() const =0; 22 virtual void setType(video::E_VERTEX_TYPE vertexType) =0; 23 virtual u32 stride() const =0; 24 virtual u32 size() const =0; 25 virtual void push_back(const video::S3DVertex &element) =0; 26 virtual video::S3DVertex& operator [](const u32 index) const =0; 27 virtual video::S3DVertex& getLast() =0; 28 virtual void set_used(u32 usedNow) =0; 29 virtual void reallocate(u32 new_size) =0; 30 virtual u32 allocated_size() const =0; 31 virtual video::S3DVertex* pointer() =0; 32 33 //! get the current hardware mapping hint 34 virtual E_HARDWARE_MAPPING getHardwareMappingHint() const =0; 35 36 //! set the hardware mapping hint, for driver 37 virtual void setHardwareMappingHint( E_HARDWARE_MAPPING NewMappingHint ) =0; 38 39 //! flags the meshbuffer as changed, reloads hardware buffers 40 virtual void setDirty() =0; 41 42 //! Get the currently used ID for identification of changes. 43 /** This shouldn't be used for anything outside the VideoDriver. */ 44 virtual u32 getChangedID() const = 0; 45 }; 46 47 48 } // end namespace scene 49 } // end namespace irr 50 51 #endif 52 53