| 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