Irrlicht 3D Engine
IMeshBuffer.h
Go to the documentation of this file.
00001 // Copyright (C) 2002-2012 Nikolaus Gebhardt
00002 // This file is part of the "Irrlicht Engine".
00003 // For conditions of distribution and use, see copyright notice in irrlicht.h
00004 
00005 #ifndef __I_MESH_BUFFER_H_INCLUDED__
00006 #define __I_MESH_BUFFER_H_INCLUDED__
00007 
00008 #include "IReferenceCounted.h"
00009 #include "SMaterial.h"
00010 #include "aabbox3d.h"
00011 #include "S3DVertex.h"
00012 #include "SVertexIndex.h"
00013 #include "EHardwareBufferFlags.h"
00014 #include "EPrimitiveTypes.h"
00015 
00016 namespace irr
00017 {
00018 namespace scene
00019 {
00021 
00039     class IMeshBuffer : public virtual IReferenceCounted
00040     {
00041     public:
00042 
00044 
00045         virtual video::SMaterial& getMaterial() = 0;
00046 
00048 
00049         virtual const video::SMaterial& getMaterial() const = 0;
00050 
00052 
00053         virtual video::E_VERTEX_TYPE getVertexType() const = 0;
00054 
00056 
00058         virtual const void* getVertices() const = 0;
00059 
00061 
00063         virtual void* getVertices() = 0;
00064 
00066 
00067         virtual u32 getVertexCount() const = 0;
00068 
00070 
00071         virtual video::E_INDEX_TYPE getIndexType() const =0;
00072 
00074 
00075         virtual const u16* getIndices() const = 0;
00076 
00078 
00079         virtual u16* getIndices() = 0;
00080 
00082 
00083         virtual u32 getIndexCount() const = 0;
00084 
00086 
00087         virtual const core::aabbox3df& getBoundingBox() const = 0;
00088 
00090 
00092         virtual void setBoundingBox(const core::aabbox3df& box) = 0;
00093 
00095         virtual void recalculateBoundingBox() = 0;
00096 
00098         virtual const core::vector3df& getPosition(u32 i) const = 0;
00099 
00101         virtual core::vector3df& getPosition(u32 i) = 0;
00102 
00104         virtual const core::vector3df& getNormal(u32 i) const = 0;
00105 
00107         virtual core::vector3df& getNormal(u32 i) = 0;
00108 
00110         virtual const core::vector2df& getTCoords(u32 i) const = 0;
00111 
00113         virtual core::vector2df& getTCoords(u32 i) = 0;
00114 
00116 
00121         virtual void append(const void* const vertices, u32 numVertices, const u16* const indices, u32 numIndices) = 0;
00122 
00124 
00126         virtual void append(const IMeshBuffer* const other) = 0;
00127 
00129         virtual E_HARDWARE_MAPPING getHardwareMappingHint_Vertex() const = 0;
00130 
00132         virtual E_HARDWARE_MAPPING getHardwareMappingHint_Index() const = 0;
00133 
00135         virtual void setHardwareMappingHint( E_HARDWARE_MAPPING newMappingHint, E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX ) = 0;
00136 
00138         virtual void setDirty(E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX) = 0;
00139 
00141 
00142         virtual u32 getChangedID_Vertex() const = 0;
00143 
00145 
00146         virtual u32 getChangedID_Index() const = 0;
00147     };
00148 
00149 } // end namespace scene
00150 } // end namespace irr
00151 
00152 #endif
00153 
00154