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