Written by Matthew Fisher

Mesh is a standard C++ array instance of the BaseMesh class.  It's the only kind that can be used by OpenGL,
but it will run fine under DirectX as well (if not as quickly as a D3DMesh.)  Mesh gets all of its
functionality from BaseMesh and has no features not defined by BaseMesh.

class Mesh : public BaseMesh {
    Mesh(GraphicsDevice &_GD);
    Mesh(BaseMesh &o);
    Mesh(const Mesh &o);

    // Memory
    void Allocate(UINT NewVertexCount, UINT NewFaceCount);
    void FreeMemory();
    Mesh& operator = (const BaseMesh &o);
    Mesh& operator = (const Mesh &o);

    // Accessors
    __forceinline UINT IndexCount() const            { return _IndexCount; }
    __forceinline UINT VertexCount() const           { return _VertexCount; }
    __forceinline UINT FaceCount() const             { return _IndexCount / 3; }
    __forceinline MeshVertex* Vertices()             { return _Vertices; }
    __forceinline DWORD* Indices()                   { return _Indices; }
    __forceinline const MeshVertex* Vertices() const { return _Vertices; }
    __forceinline const DWORD* Indices() const       { return _Indices; }

    // Rendering functions
    void Render() const;

    UINT _VertexCount, _IndexCount;
    MeshVertex*   _Vertices;
    DWORD*        _Indices;