Irrlicht 3D Engine
IMeshBuffer.h
Go to the documentation of this file.
1 // Copyright (C) 2002-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_MESH_BUFFER_H_INCLUDED__
6 #define __I_MESH_BUFFER_H_INCLUDED__
7 
8 #include "IReferenceCounted.h"
9 #include "SMaterial.h"
10 #include "aabbox3d.h"
11 #include "S3DVertex.h"
12 #include "SVertexIndex.h"
13 #include "EHardwareBufferFlags.h"
14 #include "EPrimitiveTypes.h"
15 
16 namespace irr
17 {
18 namespace scene
19 {
21 
39  class IMeshBuffer : public virtual IReferenceCounted
40  {
41  public:
42 
44 
45  virtual video::SMaterial& getMaterial() = 0;
46 
48 
49  virtual const video::SMaterial& getMaterial() const = 0;
50 
52 
53  virtual video::E_VERTEX_TYPE getVertexType() const = 0;
54 
56 
58  virtual const void* getVertices() const = 0;
59 
61 
63  virtual void* getVertices() = 0;
64 
66 
67  virtual u32 getVertexCount() const = 0;
68 
70 
71  virtual video::E_INDEX_TYPE getIndexType() const =0;
72 
74 
75  virtual const u16* getIndices() const = 0;
76 
78 
79  virtual u16* getIndices() = 0;
80 
82 
83  virtual u32 getIndexCount() const = 0;
84 
86 
87  virtual const core::aabbox3df& getBoundingBox() const = 0;
88 
90 
92  virtual void setBoundingBox(const core::aabbox3df& box) = 0;
93 
95  virtual void recalculateBoundingBox() = 0;
96 
98  virtual const core::vector3df& getPosition(u32 i) const = 0;
99 
101  virtual core::vector3df& getPosition(u32 i) = 0;
102 
104  virtual const core::vector3df& getNormal(u32 i) const = 0;
105 
107  virtual core::vector3df& getNormal(u32 i) = 0;
108 
110  virtual const core::vector2df& getTCoords(u32 i) const = 0;
111 
113  virtual core::vector2df& getTCoords(u32 i) = 0;
114 
116 
121  virtual void append(const void* const vertices, u32 numVertices, const u16* const indices, u32 numIndices) = 0;
122 
124 
126  virtual void append(const IMeshBuffer* const other) = 0;
127 
130 
133 
135  virtual void setHardwareMappingHint( E_HARDWARE_MAPPING newMappingHint, E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX ) = 0;
136 
138  virtual void setDirty(E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX) = 0;
139 
141 
142  virtual u32 getChangedID_Vertex() const = 0;
143 
145 
146  virtual u32 getChangedID_Index() const = 0;
147  };
148 
149 } // end namespace scene
150 } // end namespace irr
151 
152 #endif
153 
154 
virtual void setHardwareMappingHint(E_HARDWARE_MAPPING newMappingHint, E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX)=0
set the hardware mapping hint, for driver
virtual void recalculateBoundingBox()=0
Recalculates the bounding box. Should be called if the mesh changed.
virtual u32 getChangedID_Index() const =0
Get the currently used ID for identification of changes.
virtual u32 getIndexCount() const =0
Get amount of indices in this meshbuffer.
virtual const core::aabbox3df & getBoundingBox() const =0
Get the axis aligned bounding box of this meshbuffer.
virtual void setBoundingBox(const core::aabbox3df &box)=0
Set axis aligned bounding box.
virtual const core::vector2df & getTCoords(u32 i) const =0
returns texture coord of vertex i
virtual const core::vector3df & getPosition(u32 i) const =0
returns position of vertex i
virtual void append(const void *const vertices, u32 numVertices, const u16 *const indices, u32 numIndices)=0
Append the vertices and indices to the current buffer.
Everything in the Irrlicht Engine can be found in this namespace.
Definition: aabbox3d.h:12
virtual const core::vector3df & getNormal(u32 i) const =0
returns normal of vertex i
virtual void setDirty(E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX)=0
flags the meshbuffer as changed, reloads hardware buffers
unsigned short u16
16 bit unsigned variable.
Definition: irrTypes.h:40
virtual u32 getChangedID_Vertex() const =0
Get the currently used ID for identification of changes.
virtual E_HARDWARE_MAPPING getHardwareMappingHint_Vertex() const =0
get the current hardware mapping hint
Struct for holding a mesh with a single material.
Definition: IMeshBuffer.h:39
unsigned int u32
32 bit unsigned variable.
Definition: irrTypes.h:58
virtual E_HARDWARE_MAPPING getHardwareMappingHint_Index() const =0
get the current hardware mapping hint
Change both vertex and index mapping to the same value.
virtual u32 getVertexCount() const =0
Get amount of vertices in meshbuffer.
virtual video::E_INDEX_TYPE getIndexType() const =0
Get type of index data which is stored in this meshbuffer.
virtual const u16 * getIndices() const =0
Get access to Indices.
virtual video::SMaterial & getMaterial()=0
Get the material of this meshbuffer.
Base class of most objects of the Irrlicht Engine.
virtual const void * getVertices() const =0
Get access to vertex data. The data is an array of vertices.
E_VERTEX_TYPE
Enumeration for all vertex types there are.
Definition: S3DVertex.h:18
Struct for holding parameters for a material renderer.
Definition: SMaterial.h:226
virtual video::E_VERTEX_TYPE getVertexType() const =0
Get type of vertex data which is stored in this meshbuffer.