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 
SVertexIndex.h
irr::scene::IMeshBuffer::append
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.
irr::scene::IMeshBuffer::getIndices
virtual const u16 * getIndices() const =0
Get access to Indices.
irr::scene::IMeshBuffer::getChangedID_Index
virtual u32 getChangedID_Index() const =0
Get the currently used ID for identification of changes.
irr::scene::IMeshBuffer::getVertices
virtual const void * getVertices() const =0
Get access to vertex data. The data is an array of vertices.
irr::scene::IMeshBuffer::setHardwareMappingHint
virtual void setHardwareMappingHint(E_HARDWARE_MAPPING newMappingHint, E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX)=0
set the hardware mapping hint, for driver
irr::scene::E_HARDWARE_MAPPING
E_HARDWARE_MAPPING
Definition: EHardwareBufferFlags.h:13
irr::scene::IMeshBuffer::getHardwareMappingHint_Index
virtual E_HARDWARE_MAPPING getHardwareMappingHint_Index() const =0
get the current hardware mapping hint
irr::scene::IMeshBuffer::setBoundingBox
virtual void setBoundingBox(const core::aabbox3df &box)=0
Set axis aligned bounding box.
IReferenceCounted.h
irr::video::E_VERTEX_TYPE
E_VERTEX_TYPE
Enumeration for all vertex types there are.
Definition: S3DVertex.h:18
irr::scene::IMeshBuffer::getPosition
virtual const core::vector3df & getPosition(u32 i) const =0
returns position of vertex i
aabbox3d.h
irr::scene::IMeshBuffer::getTCoords
virtual const core::vector2df & getTCoords(u32 i) const =0
returns texture coord of vertex i
irr::scene::IMeshBuffer::getIndexCount
virtual u32 getIndexCount() const =0
Get amount of indices in this meshbuffer.
irr::scene::IMeshBuffer::getNormal
virtual const core::vector3df & getNormal(u32 i) const =0
returns normal of vertex i
irr::scene::IMeshBuffer::getMaterial
virtual video::SMaterial & getMaterial()=0
Get the material of this meshbuffer.
EHardwareBufferFlags.h
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::IMeshBuffer::recalculateBoundingBox
virtual void recalculateBoundingBox()=0
Recalculates the bounding box. Should be called if the mesh changed.
irr::IReferenceCounted
Base class of most objects of the Irrlicht Engine.
Definition: IReferenceCounted.h:41
irr::scene::E_BUFFER_TYPE
E_BUFFER_TYPE
Definition: EHardwareBufferFlags.h:28
S3DVertex.h
irr::scene::IMeshBuffer::getVertexType
virtual video::E_VERTEX_TYPE getVertexType() const =0
Get type of vertex data which is stored in this meshbuffer.
irr::scene::IMeshBuffer::getBoundingBox
virtual const core::aabbox3df & getBoundingBox() const =0
Get the axis aligned bounding box of this meshbuffer.
irr::scene::IMeshBuffer::getHardwareMappingHint_Vertex
virtual E_HARDWARE_MAPPING getHardwareMappingHint_Vertex() const =0
get the current hardware mapping hint
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::u32
unsigned int u32
32 bit unsigned variable.
Definition: irrTypes.h:58
irr::video::E_INDEX_TYPE
E_INDEX_TYPE
Definition: SVertexIndex.h:15
irr::scene::IMeshBuffer::getChangedID_Vertex
virtual u32 getChangedID_Vertex() const =0
Get the currently used ID for identification of changes.
EPrimitiveTypes.h
irr::scene::IMeshBuffer::setDirty
virtual void setDirty(E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX)=0
flags the meshbuffer as changed, reloads hardware buffers
irr::scene::IMeshBuffer::getVertexCount
virtual u32 getVertexCount() const =0
Get amount of vertices in meshbuffer.
irr::video::SMaterial
Struct for holding parameters for a material renderer.
Definition: SMaterial.h:226
irr::scene::IMeshBuffer::getIndexType
virtual video::E_INDEX_TYPE getIndexType() const =0
Get type of index data which is stored in this meshbuffer.
irr::core::aabbox3d< f32 >
irr::scene::IMeshBuffer
Struct for holding a mesh with a single material.
Definition: IMeshBuffer.h:39
irr::core::vector3d< f32 >
SMaterial.h