Irrlicht 3D Engine
IDynamicMeshBuffer.h
Go to the documentation of this file.
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_DYNAMIC_MESH_BUFFER_H_INCLUDED__
6 #define __I_DYNAMIC_MESH_BUFFER_H_INCLUDED__
7 
8 #include "IMeshBuffer.h"
9 #include "IVertexBuffer.h"
10 #include "IIndexBuffer.h"
11 
12 namespace irr
13 {
14 namespace scene
15 {
16 
19  {
20  public:
21  virtual IVertexBuffer &getVertexBuffer() const =0;
22  virtual IIndexBuffer &getIndexBuffer() const =0;
23 
24  virtual void setVertexBuffer(IVertexBuffer *vertexBuffer) =0;
25  virtual void setIndexBuffer(IIndexBuffer *indexBuffer) =0;
26 
28 
29  virtual video::SMaterial& getMaterial() =0;
30 
32 
33  virtual const video::SMaterial& getMaterial() const =0;
34 
36 
37  virtual const core::aabbox3df& getBoundingBox() const =0;
38 
40 
42  virtual void setBoundingBox(const core::aabbox3df& box) =0;
43 
45  virtual void recalculateBoundingBox() =0;
46 
48 
53  virtual void append(const void* const vertices, u32 numVertices, const u16* const indices, u32 numIndices)
54  {
55 
56  }
57 
59 
61  virtual void append(const IMeshBuffer* const other)
62  {
63 
64  }
65 
66  // ------------------- To be removed? ------------------- //
67 
70  {
72  }
73 
76  {
78  }
79 
82  {
83  if (Buffer==EBT_VERTEX_AND_INDEX || Buffer==EBT_VERTEX)
84  getVertexBuffer().setHardwareMappingHint(NewMappingHint);
85  if (Buffer==EBT_VERTEX_AND_INDEX || Buffer==EBT_INDEX)
86  getIndexBuffer().setHardwareMappingHint(NewMappingHint);
87  }
88 
91  {
92  if (Buffer==EBT_VERTEX_AND_INDEX || Buffer==EBT_VERTEX)
94  if (Buffer==EBT_VERTEX_AND_INDEX || Buffer==EBT_INDEX)
96  }
97 
98  virtual u32 getChangedID_Vertex() const
99  {
100  return getVertexBuffer().getChangedID();
101  }
102 
103  virtual u32 getChangedID_Index() const
104  {
105  return getIndexBuffer().getChangedID();
106  }
107 
108  // ------------------- Old interface ------------------- //
109 
111 
113  {
114  return getVertexBuffer().getType();
115  }
116 
118 
120  virtual const void* getVertices() const
121  {
122  return getVertexBuffer().getData();
123  }
124 
126 
128  virtual void* getVertices()
129  {
130  return getVertexBuffer().getData();
131  }
132 
134 
135  virtual u32 getVertexCount() const
136  {
137  return getVertexBuffer().size();
138  }
139 
141 
143  {
144  return getIndexBuffer().getType();
145  }
146 
148 
149  virtual const u16* getIndices() const
150  {
151  return (u16*)getIndexBuffer().getData();
152  }
153 
155 
156  virtual u16* getIndices()
157  {
158  return (u16*)getIndexBuffer().getData();
159  }
160 
162 
163  virtual u32 getIndexCount() const
164  {
165  return getIndexBuffer().size();
166  }
167 
169  virtual const core::vector3df& getPosition(u32 i) const
170  {
171  return getVertexBuffer()[i].Pos;
172  }
173 
176  {
177  return getVertexBuffer()[i].Pos;
178  }
179 
181  virtual const core::vector2df& getTCoords(u32 i) const
182  {
183  return getVertexBuffer()[i].TCoords;
184  }
185 
188  {
189  return getVertexBuffer()[i].TCoords;
190  }
191 
193  virtual const core::vector3df& getNormal(u32 i) const
194  {
195  return getVertexBuffer()[i].Normal;
196  }
197 
200  {
201  return getVertexBuffer()[i].Normal;
202  }
203  };
204 
205 
206 } // end namespace scene
207 } // end namespace irr
208 
209 #endif
210 
211 
irr::scene::IVertexBuffer::getHardwareMappingHint
virtual E_HARDWARE_MAPPING getHardwareMappingHint() const =0
get the current hardware mapping hint
irr::scene::IDynamicMeshBuffer::getHardwareMappingHint_Vertex
virtual E_HARDWARE_MAPPING getHardwareMappingHint_Vertex() const
get the current hardware mapping hint
Definition: IDynamicMeshBuffer.h:69
irr::scene::IDynamicMeshBuffer::getVertexCount
virtual u32 getVertexCount() const
Get amount of vertices in meshbuffer.
Definition: IDynamicMeshBuffer.h:135
irr::scene::IVertexBuffer::size
virtual u32 size() const =0
irr::scene::IDynamicMeshBuffer::getHardwareMappingHint_Index
virtual E_HARDWARE_MAPPING getHardwareMappingHint_Index() const
get the current hardware mapping hint
Definition: IDynamicMeshBuffer.h:75
irr::scene::IIndexBuffer::getChangedID
virtual u32 getChangedID() const =0
Get the currently used ID for identification of changes.
irr::scene::E_HARDWARE_MAPPING
E_HARDWARE_MAPPING
Definition: EHardwareBufferFlags.h:13
irr::scene::IVertexBuffer::setHardwareMappingHint
virtual void setHardwareMappingHint(E_HARDWARE_MAPPING NewMappingHint)=0
set the hardware mapping hint, for driver
irr::scene::IDynamicMeshBuffer::getPosition
virtual const core::vector3df & getPosition(u32 i) const
returns position of vertex i
Definition: IDynamicMeshBuffer.h:169
irr::scene::IVertexBuffer::getData
virtual void * getData()=0
irr::scene::IDynamicMeshBuffer::getIndexBuffer
virtual IIndexBuffer & getIndexBuffer() const =0
irr::scene::IDynamicMeshBuffer::getIndices
virtual const u16 * getIndices() const
Get access to Indices.
Definition: IDynamicMeshBuffer.h:149
irr::scene::IDynamicMeshBuffer::setDirty
virtual void setDirty(E_BUFFER_TYPE Buffer=EBT_VERTEX_AND_INDEX)
flags the mesh as changed, reloads hardware buffers
Definition: IDynamicMeshBuffer.h:90
irr::scene::IIndexBuffer::size
virtual u32 size() const =0
irr::scene::IDynamicMeshBuffer::getIndexCount
virtual u32 getIndexCount() const
Get amount of indices in this meshbuffer.
Definition: IDynamicMeshBuffer.h:163
irr::video::E_VERTEX_TYPE
E_VERTEX_TYPE
Enumeration for all vertex types there are.
Definition: S3DVertex.h:18
irr::scene::IVertexBuffer::getChangedID
virtual u32 getChangedID() const =0
Get the currently used ID for identification of changes.
irr::scene::IDynamicMeshBuffer::setBoundingBox
virtual void setBoundingBox(const core::aabbox3df &box)=0
Set axis aligned bounding box.
irr::scene::IIndexBuffer::getData
virtual void * getData()=0
irr::scene::IDynamicMeshBuffer::getIndices
virtual u16 * getIndices()
Get access to Indices.
Definition: IDynamicMeshBuffer.h:156
irr::scene::IDynamicMeshBuffer::getMaterial
virtual video::SMaterial & getMaterial()=0
Get the material of this meshbuffer.
irr::scene::IDynamicMeshBuffer::getVertexType
virtual video::E_VERTEX_TYPE getVertexType() const
Get type of vertex data which is stored in this meshbuffer.
Definition: IDynamicMeshBuffer.h:112
irr::scene::IIndexBuffer::setHardwareMappingHint
virtual void setHardwareMappingHint(E_HARDWARE_MAPPING NewMappingHint)=0
set the hardware mapping hint, for driver
irr::scene::EBT_VERTEX
@ EBT_VERTEX
Change the vertex mapping.
Definition: EHardwareBufferFlags.h:33
irr::scene::EBT_VERTEX_AND_INDEX
@ EBT_VERTEX_AND_INDEX
Change both vertex and index mapping to the same value.
Definition: EHardwareBufferFlags.h:37
irr::core::vector2d< f32 >
irr::scene::IDynamicMeshBuffer::getNormal
virtual const core::vector3df & getNormal(u32 i) const
returns normal of vertex i
Definition: IDynamicMeshBuffer.h:193
irr::scene::IDynamicMeshBuffer::getChangedID_Vertex
virtual u32 getChangedID_Vertex() const
Get the currently used ID for identification of changes.
Definition: IDynamicMeshBuffer.h:98
irr::scene::IIndexBuffer::setDirty
virtual void setDirty()=0
flags the meshbuffer as changed, reloads hardware buffers
irr::scene::IDynamicMeshBuffer
Definition: IDynamicMeshBuffer.h:18
IIndexBuffer.h
irr::scene::IDynamicMeshBuffer::getTCoords
virtual core::vector2df & getTCoords(u32 i)
returns texture coords of vertex i
Definition: IDynamicMeshBuffer.h:187
irr::scene::IDynamicMeshBuffer::getVertices
virtual void * getVertices()
Get access to vertex data. The data is an array of vertices.
Definition: IDynamicMeshBuffer.h:128
irr::scene::IDynamicMeshBuffer::getPosition
virtual core::vector3df & getPosition(u32 i)
returns position of vertex i
Definition: IDynamicMeshBuffer.h:175
irr::scene::E_BUFFER_TYPE
E_BUFFER_TYPE
Definition: EHardwareBufferFlags.h:28
irr::scene::IIndexBuffer::getHardwareMappingHint
virtual E_HARDWARE_MAPPING getHardwareMappingHint() const =0
get the current hardware mapping hint
irr::scene::IDynamicMeshBuffer::getNormal
virtual core::vector3df & getNormal(u32 i)
returns normal of vertex i
Definition: IDynamicMeshBuffer.h:199
irr::scene::IDynamicMeshBuffer::setHardwareMappingHint
virtual void setHardwareMappingHint(E_HARDWARE_MAPPING NewMappingHint, E_BUFFER_TYPE Buffer=EBT_VERTEX_AND_INDEX)
set the hardware mapping hint, for driver
Definition: IDynamicMeshBuffer.h:81
IVertexBuffer.h
irr::scene::IDynamicMeshBuffer::getVertices
virtual const void * getVertices() const
Get access to vertex data. The data is an array of vertices.
Definition: IDynamicMeshBuffer.h:120
irr::scene::IDynamicMeshBuffer::getTCoords
virtual const core::vector2df & getTCoords(u32 i) const
returns texture coords of vertex i
Definition: IDynamicMeshBuffer.h:181
irr::scene::IIndexBuffer::getType
virtual video::E_INDEX_TYPE getType() const =0
irr::scene::IVertexBuffer
Definition: IVertexBuffer.h:17
irr::scene::IDynamicMeshBuffer::getChangedID_Index
virtual u32 getChangedID_Index() const
Get the currently used ID for identification of changes.
Definition: IDynamicMeshBuffer.h:103
irr
Everything in the Irrlicht Engine can be found in this namespace.
Definition: aabbox3d.h:12
irr::u16
unsigned short u16
16 bit unsigned variable.
Definition: irrTypes.h:40
irr::scene::IDynamicMeshBuffer::append
virtual void append(const IMeshBuffer *const other)
Append the meshbuffer to the current buffer.
Definition: IDynamicMeshBuffer.h:61
irr::scene::IDynamicMeshBuffer::getIndexType
virtual video::E_INDEX_TYPE getIndexType() const
Get type of index data which is stored in this meshbuffer.
Definition: IDynamicMeshBuffer.h:142
irr::u32
unsigned int u32
32 bit unsigned variable.
Definition: irrTypes.h:58
irr::scene::IDynamicMeshBuffer::setIndexBuffer
virtual void setIndexBuffer(IIndexBuffer *indexBuffer)=0
irr::scene::IDynamicMeshBuffer::getBoundingBox
virtual const core::aabbox3df & getBoundingBox() const =0
Get the axis aligned bounding box of this meshbuffer.
IMeshBuffer.h
irr::scene::IDynamicMeshBuffer::recalculateBoundingBox
virtual void recalculateBoundingBox()=0
Recalculates the bounding box. Should be called if the mesh changed.
irr::scene::IDynamicMeshBuffer::setVertexBuffer
virtual void setVertexBuffer(IVertexBuffer *vertexBuffer)=0
irr::video::E_INDEX_TYPE
E_INDEX_TYPE
Definition: SVertexIndex.h:15
irr::scene::IDynamicMeshBuffer::append
virtual void append(const void *const vertices, u32 numVertices, const u16 *const indices, u32 numIndices)
Append the vertices and indices to the current buffer.
Definition: IDynamicMeshBuffer.h:53
irr::scene::IVertexBuffer::getType
virtual video::E_VERTEX_TYPE getType() const =0
irr::video::SMaterial
Struct for holding parameters for a material renderer.
Definition: SMaterial.h:226
irr::core::aabbox3d< f32 >
irr::scene::IMeshBuffer
Struct for holding a mesh with a single material.
Definition: IMeshBuffer.h:39
irr::scene::EBT_INDEX
@ EBT_INDEX
Change the index mapping.
Definition: EHardwareBufferFlags.h:35
irr::scene::IDynamicMeshBuffer::getVertexBuffer
virtual IVertexBuffer & getVertexBuffer() const =0
irr::core::vector3d< f32 >
irr::scene::IIndexBuffer
Definition: IIndexBuffer.h:24
irr::scene::IVertexBuffer::setDirty
virtual void setDirty()=0
flags the meshbuffer as changed, reloads hardware buffers