00001
00002
00003
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
00013 namespace irr
00014 {
00015 namespace scene
00016 {
00017
00019 enum E_PRIMITIVE_TYPE
00020 {
00022 EPT_POINTS=0,
00023
00025 EPT_LINE_STRIP,
00026
00028 EPT_LINE_LOOP,
00029
00031 EPT_LINES,
00032
00035 EPT_TRIANGLE_STRIP,
00036
00039 EPT_TRIANGLE_FAN,
00040
00042 EPT_TRIANGLES,
00043
00045 EPT_QUAD_STRIP,
00046
00048 EPT_QUADS,
00049
00051 EPT_POLYGON,
00052
00054 EPT_POINT_SPRITES
00055 };
00056
00057
00058
00060
00061 class IMeshBuffer : public virtual IReferenceCounted
00062 {
00063 public:
00064
00066 virtual ~IMeshBuffer() { }
00067
00069
00070 virtual video::SMaterial& getMaterial() = 0;
00071
00073
00074 virtual const video::SMaterial& getMaterial() const = 0;
00075
00077
00078 virtual video::E_VERTEX_TYPE getVertexType() const = 0;
00079
00081
00083 virtual const void* getVertices() const = 0;
00084
00086
00088 virtual void* getVertices() = 0;
00089
00091
00092 virtual u32 getVertexCount() const = 0;
00093
00095
00096 virtual const u16* getIndices() const = 0;
00097
00099
00100 virtual u16* getIndices() = 0;
00101
00103
00104 virtual u32 getIndexCount() const = 0;
00105
00107
00108 virtual const core::aabbox3df& getBoundingBox() const = 0;
00109
00111
00113 virtual void setBoundingBox(const core::aabbox3df& box) = 0;
00114
00116 virtual void recalculateBoundingBox() = 0;
00117
00119
00124 virtual void append(const void* const vertices, u32 numVertices, const u16* const indices, u32 numIndices) = 0;
00125
00127
00129 virtual void append(const IMeshBuffer* const other) = 0;
00130 };
00131
00132 }
00133 }
00134
00135 #endif
00136